Beispiel #1
0
def handle_events(c, e):
    #print str(e.eventtype()) + " " +  str(e.source()) + " " + str(e.arguments()[0])
    #f.internalDebug("Handled event: %s With source: %s Target: %s Arguments: %s" % (e.eventtype(), e.source(), e.target(), str(e.arguments())))
    if e.eventtype() in settings.target_events:
        #f.internalDebug("An event we want to look at was triggered: %s With source: %s Target: %s Arguments: %s" % (e.eventtype(), e.source(), e.target(), str(e.arguments())))
        target_modules = list()
        for mod in settings.mod_dict:
            if e.eventtype() in settings.mod_dict[mod]:
                target_modules.append(mod)
        #f.internalDebug(str(target_modules) + " are interested in processing this event.")
        for mod in target_modules:
            try:
                fp, pathname, description = imp.find_module(mod, ["modules"])
            except:
                f.internalDebug("Couldn't load module " + mod)
                print traceback.format_exc()
                return
            try:
                module = imp.load_module(mod, fp, pathname, description)
                thread.start_new_thread(module.run,
                                        (settings.server, irc, c, e))
            except:
                print traceback.format_exc()
    else:
        #We're not interested in this event.
        return
Beispiel #2
0
def handle_events(c, e):
    #print str(e.eventtype()) + " " +  str(e.source()) + " " + str(e.arguments()[0])
    #f.internalDebug("Handled event: %s With source: %s Target: %s Arguments: %s" % (e.eventtype(), e.source(), e.target(), str(e.arguments())))
    if e.eventtype() in settings.target_events:
        #f.internalDebug("An event we want to look at was triggered: %s With source: %s Target: %s Arguments: %s" % (e.eventtype(), e.source(), e.target(), str(e.arguments())))
        target_modules = list()
        for mod in settings.mod_dict:
            if e.eventtype() in settings.mod_dict[mod]:
                target_modules.append(mod)
        #f.internalDebug(str(target_modules) + " are interested in processing this event.")
        for mod in target_modules:
            try:
                fp, pathname, description = imp.find_module(mod, ["modules"])
            except:
                f.internalDebug("Couldn't load module " + mod)
                print traceback.format_exc()
                return
            try:
                module = imp.load_module(mod, fp, pathname, description)
                thread.start_new_thread(module.run,(settings.server, irc, c, e))
            except:
                print traceback.format_exc()
    else: 
        #We're not interested in this event.
        return
Beispiel #3
0
def handle_welcome(c, e):
    if f.varexists('settings.nickservID'):
        f.internalDebug("Sent nickserv ID")
        server.send_raw(settings.nickservID)
    if f.varexists('settings.channels'):
        f.internalDebug("Tried to join channels.")
        server.join(settings.channels)
    if f.varexists('settings.realname'):
        f.internalDebug("Sent setname")
        server.send_raw("SETNAME :" + settings.realname)
    if f.varexists('settings.operLine'):
        f.internalDebug("Sent oper line")
        server.send_raw("OPER " + settings.operLine)
    if f.varexists('settings.automodes'):
        server.send_raw("UMODE2 " + settings.automodes)
    return
Beispiel #4
0
def init_modules():
    f.internalDebug("Running init for modules...")
    for module in settings.mod_dict:
        f.internalDebug("Searching for init method in " + module)
        mod = imp.new_module(module)
        fp, pathname, description = imp.find_module(module, ['modules'])
        try:
            mod = imp.load_module(module, fp, pathname, description)
            if mod.init:
                f.internalDebug("Ran an init function for " + module)
                mod.init()
        except:
            f.internalDebug("Failed to load " + module)
        if fp:
            fp.close()
    return 
Beispiel #5
0
def init_modules():
    f.internalDebug("Running init for modules...")
    for module in settings.mod_dict:
        f.internalDebug("Searching for init method in " + module)
        mod = imp.new_module(module)
        fp, pathname, description = imp.find_module(module, ['modules'])
        try:
            mod = imp.load_module(module, fp, pathname, description)
            if mod.init:
                f.internalDebug("Ran an init function for " + module)
                mod.init()
        except:
            f.internalDebug("Failed to load " + module)
        if fp:
            fp.close()
    return
Beispiel #6
0
def handle_welcome(c, e):
    if f.varexists('settings.nickservID'):
        f.internalDebug("Sent nickserv ID")
        server.send_raw(settings.nickservID)
    if f.varexists('settings.channels'):
        f.internalDebug("Tried to join channels.")
        server.join(settings.channels)
    if f.varexists('settings.realname'):
        f.internalDebug("Sent setname")
        server.send_raw("SETNAME :" + settings.realname)
    if f.varexists('settings.operLine'):
        f.internalDebug("Sent oper line")
        server.send_raw("OPER " + settings.operLine)
    if f.varexists('settings.automodes'):
        server.send_raw("UMODE2 " + settings.automodes)
    return
Beispiel #7
0
def get_hooks(module):
    f.internalDebug("Loading " + module + " hooks.")
    mod = imp.new_module(module)
    fp, pathname, description = imp.find_module(module, ['modules'])
    try:
        mod = imp.load_module(module, fp, pathname, description)
    except:
        f.internalDebug("Failed to load " + module)
        if fp:
            fp.close()
        return
    f.internalDebug(mod.M_HOOKS)
    return mod.M_HOOKS
Beispiel #8
0
def get_hooks(module):
    f.internalDebug("Loading " + module + " hooks.")
    mod = imp.new_module(module)
    fp, pathname, description = imp.find_module(module, ['modules'])
    try:
        mod = imp.load_module(module, fp, pathname, description)
    except:
        f.internalDebug("Failed to load " + module)
        if fp:
            fp.close()
        return
    f.internalDebug(mod.M_HOOKS)
    return mod.M_HOOKS
Beispiel #9
0
def main():
    #Write a pidfile.
    pidfile = file("botski.pid", "w")
    pidfile.write(str(os.getpid()))
    pidfile.close()
    #Enable Garbage Collector
    gc.enable()
    global irc
    global server
    settings.mod_dict = build_mod_dict()
    settings.target_events = find_target_events()
    init_modules()
    try:
        os.unlink(settings.logging_file)
        f.internalDebug("Deleted file: " + settings.logging_file)
    except:
        f.internalDebug("Failed to delete logging file: " + settings.logging_file)
        pass
    f.internalDebug("Module hooks loaded for modules: " + str(settings.mod_dict))
    f.internalDebug("Target events:" + str(settings.target_events))
    f.internalDebug("Connecting...")
    irc = irclib.IRC()
    irc.add_global_handler('all_events', handle_events)
    irc.add_global_handler('disconnect', handle_disconnect)
    irc.add_global_handler('welcome', handle_welcome)
    server = irc.server()
    if settings.useBNC:
        server.connect(settings.bncHost, settings.bncPort, settings.nick, settings.bncPass, settings.ident, ssl=settings.ssl)
    else:
        server.connect(settings.serverhost, settings.port, settings.nick, settings.serverpass, settings.ident, ssl=settings.ssl)
    f.internalDebug("Connected.")
    f.internalDebug("Entered main loop.")
    settings.server = server
    irc.process_forever()
    f.internalDebug("irc.process_forever did not go forever")
Beispiel #10
0
def main():
    #Write a pidfile.
    pidfile = file("botski.pid", "w")
    pidfile.write(str(os.getpid()))
    pidfile.close()
    #Enable Garbage Collector
    gc.enable()
    global irc
    global server
    settings.mod_dict = build_mod_dict()
    settings.target_events = find_target_events()
    init_modules()
    try:
        os.unlink(settings.logging_file)
        f.internalDebug("Deleted file: " + settings.logging_file)
    except:
        f.internalDebug("Failed to delete logging file: " +
                        settings.logging_file)
        pass
    f.internalDebug("Module hooks loaded for modules: " +
                    str(settings.mod_dict))
    f.internalDebug("Target events:" + str(settings.target_events))
    f.internalDebug("Connecting...")
    irc = irclib.IRC()
    irc.add_global_handler('all_events', handle_events)
    irc.add_global_handler('disconnect', handle_disconnect)
    irc.add_global_handler('welcome', handle_welcome)
    server = irc.server()
    if settings.useBNC:
        server.connect(settings.bncHost,
                       settings.bncPort,
                       settings.nick,
                       settings.bncPass,
                       settings.ident,
                       ssl=settings.ssl)
    else:
        server.connect(settings.serverhost,
                       settings.port,
                       settings.nick,
                       settings.serverpass,
                       settings.ident,
                       ssl=settings.ssl)
    f.internalDebug("Connected.")
    f.internalDebug("Entered main loop.")
    settings.server = server
    irc.process_forever()
    f.internalDebug("irc.process_forever did not go forever")