def init(): """ called upon plugin registration. """ global stopped stopped = False global loggers for (botname, channel) in cfg.get("channels"): enablelogging(botname, channel) callbacks.add("PRIVMSG", chatlogcb, prechatlogcb) callbacks.add("JOIN", chatlogcb, prechatlogcb) callbacks.add("PART", chatlogcb, prechatlogcb) callbacks.add("NOTICE", chatlogcb, prechatlogcb) callbacks.add("QUIT", chatlogcb, prechatlogcb) callbacks.add("NICK", chatlogcb, prechatlogcb) callbacks.add("PRESENCE", chatlogcb, prechatlogcb) callbacks.add("MESSAGE", chatlogcb, prechatlogcb) callbacks.add("CONSOLE", chatlogcb, prechatlogcb) callbacks.add("CONVORE", chatlogcb, prechatlogcb) first_callbacks.add("OUTPUT", chatlogcb, prechatlogcb) return 1
if cfg['udp'] and cfg['udpseed']: crypt = rijndael(cfg['udpseed']) ## plugin init def init(): """ init the udp plugin. """ if cfg['udp']: global udplistener start_new_thread(udplistener._listen, ()) start_new_thread(udplistener._handleloop, ()) start_new_thread(udplistener._outloop, ()) return 1 ## plugin shutdown def shutdown(): """ shutdown the udp plugin. """ global udplistener if udplistener: udplistener.stop = 1 udplistener.outqueue.put_nowait((None, None)) udplistener.queue.put_nowait((None, None)) return 1 ## start def udpstart(bot, event): pass first_callbacks.add("START", udpstart)
if event: t = "[%s]" % outbot.cfg.nick logging.debug("sending to %s (%s)" % (target, outbot.cfg.name)) txt = outbot.normalize(txt) txt = stripcolor(txt) outbot.outnocb(target, txt, "normal", event=e) else: logging.info("can't find bot for (%s,%s,%s)" % (botname, type, target)) except Exception as ex: handle_exception() except KeyError: pass # MORE CORE BUSINESS # this is the place where the callbacks get registered. The first argument is # the string representation of the event type, MESSAGE is for jabber message, # EXEC is for the gadget handling, WEB for the website, BLIP_SUBMITTED for # wave and OUTPUT for the outputcache (both used in wave and web). first_callbacks.add('MESSAGE', relaycallback, relayprecondition) first_callbacks.add('EXEC', relaycallback, relayprecondition) first_callbacks.add('WEB', relaycallback, relayprecondition) first_callbacks.add('BLIP_SUBMITTED', relaycallback, relayprecondition) first_callbacks.add('OUTPUT', relaycallback, relayprecondition) first_callbacks.add('PRIVMSG', relaycallback, relayprecondition) first_callbacks.add('CONVORE', relaycallback, relayprecondition) first_callbacks.add('TORNADO', relaycallback, relayprecondition) ## COMMANDS # this is where the commands for the relay plugin are defined, Arguments to a # command function are the bot that the event occured on and the event that # triggered the command. Think the code speaks for itself here ;] ## relay command
if event.chan: e.allowwatch = event.chan.data.allowwatch fleet = getfleet() for jid in forward.data.channels[event.channel.lower()]: if not "@" in jid: logging.error("forward - %s is not a valid JID" % jid) ; continue logging.info("forward - sending to %s" % jid) outbot = fleet.getfirstjabber() if outbot: e.source = outbot.cfg.user txt = outbot.normalize(e.tojson()) txt = stripcolor(txt) #txt = e.tojson() container = Container(outbot.cfg.user, txt) outbot.outnocb(jid, container.tojson()) else: logging.info("forward - no xmpp bot found in fleet".upper()) first_callbacks.add('BLIP_SUBMITTED', forwardoutcb, forwardoutpre) first_callbacks.add('MESSAGE', forwardoutcb, forwardoutpre) #first_callbacks.add('PRESENCE', forwardoutcb, forwardoutpre) first_callbacks.add('PRIVMSG', forwardoutcb, forwardoutpre) first_callbacks.add('JOIN', forwardoutcb, forwardoutpre) first_callbacks.add('PART', forwardoutcb, forwardoutpre) first_callbacks.add('QUIT', forwardoutcb, forwardoutpre) first_callbacks.add('NICK', forwardoutcb, forwardoutpre) first_callbacks.add('CONSOLE', forwardoutcb, forwardoutpre) first_callbacks.add('WEB', forwardoutcb, forwardoutpre) first_callbacks.add('DISPATCH', forwardoutcb, forwardoutpre) first_callbacks.add('OUTPUT', forwardoutcb, forwardoutpre) first_callbacks.add('TORNADO', forwardoutcb, forwardoutpre) ## forward-add command
state.data.colormapping[txt] = c state.save() event.reply("color of %s set to %s" % (txt, c)) cmnds.add("color-add", handle_coloradd, ["OPER"]) examples.add("color-add", "add a text color replacement to the morphs", "color-add dunker 8") ## color-del command def handle_colordel(bot, event): """ arguments: <txt> - remove color mapping. """ if not event.rest: event.missing("<txt>") ; return try: del state.data.colormapping[event.rest] ; state.save() except KeyError: event.reply("we are not morphing %s" % event.rest) event.reply("color removed for %s" % event.rest) cmnds.add("color-del", handle_colordel, ["OPER"]) examples.add("color-del", "remove a text color replacement from the morphs", "color-del dunker") ## start def init(): """ init the colors plugin, add the colormorph. """ outputmorphs.add(docolormorph) def bogus(bot, event): """ bogus startup function to load the color morph on startup. """ pass first_callbacks.add("START", bogus)
logging.info("watcher - %s - %s" % (event.channel, str(subscribers))) for item in subscribers: try: try: (botname, type, channel) = item except ValueError: continue if not event.allowatch: pass elif channel not in event.allowwatch: logging.warn("watcher - allowwatch denied %s - %s" % (channel, event.allowwatch)) ; continue m = formatevent(bot, event, subscribers, True) if event.cbtype in ['OUTPUT', 'JOIN', 'PART', 'QUIT', 'NICK']: txt = "[!] %s" % m.txt else: txt = "[%s] %s" % (m.nick or event.nick or event.auth, m.txt) if txt.count('] [') > 2: logging.debug("watcher - %s - skipping %s" % (type, txt)) ; continue logging.warn("watcher - forwarding to %s" % channel) writeout(botname, type, channel, txt, event.tojson()) except Exception as ex: handle_exception() first_callbacks.add('BLIP_SUBMITTED', watchcallback, prewatchcallback) first_callbacks.add('PRIVMSG', watchcallback, prewatchcallback) first_callbacks.add('JOIN', watchcallback, prewatchcallback) first_callbacks.add('PART', watchcallback, prewatchcallback) first_callbacks.add('QUIT', watchcallback, prewatchcallback) first_callbacks.add('NICK', watchcallback, prewatchcallback) first_callbacks.add('OUTPUT', watchcallback, prewatchcallback) first_callbacks.add('MESSAGE', watchcallback, prewatchcallback) first_callbacks.add('CONSOLE', watchcallback, prewatchcallback) first_callbacks.add('WEB', watchcallback, prewatchcallback) first_callbacks.add('DISPATCH', watchcallback, prewatchcallback) first_callbacks.add('TORNADO', watchcallback, prewatchcallback) ## watcher-start command def handle_watcherstart(bot, event):