def add_bridge(bot, command, args_array, bridge): parser = ArgumentParser(prog=command) parser.add_argument('xmpp_room_jid', type=str) parser.add_argument('irc_chan', type=str) parser.add_argument('irc_server', type=str) parser.add_argument('--mode', choices=Bridge.modes, default=Bridge.modes[0]) parser.add_argument('--say-level', choices=say_levels.levels, default=say_levels.levels[1]) parser.add_argument('--irc-port', type=int, default=6667) try: args = parser.parse_args(args_array) except Exception as e: return '\n' + e.args[1] bot.new_bridge(args.xmpp_room_jid, args.irc_chan, args.irc_server, args.mode, args.say_level, irc_port=args.irc_port) return 'Bridge added.'
def bridges(bot, command, args_array, bridge): parser = ArgumentParser(prog=command) parser.add_argument('--show-mode', default=False, action='store_true') parser.add_argument('--show-say-level', default=False, action='store_true') parser.add_argument('--show-participants', default=False, action='store_true') try: args = parser.parse_args(args_array) except Exception as e: return '\n' + e.args[1] ret = 'List of bridges:' for i, b in enumerate(bot.bridges): ret += '\n' + str(i + 1) + ' - ' + str(b) if args.show_mode: ret += ' - mode=' + b.mode if args.show_say_level: ret += ' - say_level=' + str(b.say_level) if args.show_participants: xmpp_participants_nicknames = b.get_participants_nicknames_list( protocols=['xmpp']) ret += '\nparticipants on XMPP (' + str( len(xmpp_participants_nicknames)) + '): ' + ' '.join( xmpp_participants_nicknames) irc_participants_nicknames = b.get_participants_nicknames_list( protocols=['irc']) ret += '\nparticipants on IRC (' + str( len(irc_participants_nicknames)) + '): ' + ' '.join( irc_participants_nicknames) if b.irc_connection == None: ret += ' - this bridge is stopped, use "restart-bridges ' + str( i + 1) + '" to restart it' return ret
def connections(bot, command, args_array, bridge): parser = ArgumentParser(prog=command) parser.add_argument('--verbose', '-v', default=False, action='store_true') parser.add_argument('--sort', '-s', default=False, action='store_true') try: args = parser.parse_args(args_array) except Exception as e: return '\n' + e.args[1] return irc_connections(bot, 'irc-connections', args_array, bridge) + '\n' + xmpp_connections( bot, 'xmpp-connections', args_array, bridge)
def stop_bridges(bot, command, args_array, bridge): parser = ArgumentParser(prog=command) parser.add_argument('bridge_id', nargs='+') try: args = parser.parse_args(args_array) except Exception as e: return '\n' + e.args[1] found_bridges, ret = _find_bridges(bot, args.bridge_id) for found_bridge in found_bridges: found_bridge.stop() return ret + 'Bridges stopped.'
def change_bridges_mode(bot, command, args_array, bridge): parser = ArgumentParser(prog=command) parser.add_argument('bridge_id', nargs='+') parser.add_argument('new_mode', choices=Bridge.modes) try: args = parser.parse_args(args_array) except Exception as e: return '\n' + e.args[1] found_bridges, ret = _find_bridges(bot, args.bridge_id) for found_bridge in found_bridges: r = found_bridge.change_mode(args.new_mode) if r: ret += r + '\n' if ret: return ret return 'Modes changed.'
def xmpp_connections(bot, command, args_array, bridge): parser = ArgumentParser(prog=command) parser.add_argument('--verbose', '-v', default=False, action='store_true') parser.add_argument('--sort', '-s', default=False, action='store_true') try: args = parser.parse_args(args_array) except Exception as e: return '\n' + e.args[1] n = len(bot.xmpp_connections) if args.verbose: ret = 'List of XMPP connections (' + str(n) + '):' nicknames = bot.xmpp_connections.keys() if args.sort: nicknames.sort() for nickname in nicknames: ret += '\n\t' + nickname else: ret = 'Number of XMPP connections: ' + str(n) return ret
def restart_bridges(bot, command, args_array, bridge): parser = ArgumentParser(prog=command) parser.add_argument('bridge_id', nargs='+') parser.add_argument('--soft', default=False, action='store_true') try: args = parser.parse_args(args_array) except Exception as e: return '\n' + e.args[1] found_bridges, ret = _find_bridges(bot, args.bridge_id) if args.soft: for found_bridge in found_bridges: found_bridge.soft_restart() return ret + 'Bridges softly restarted.' else: for found_bridge in found_bridges: found_bridge.restart() return ret + 'Bridges restarted.'
def debug(bot, command, args_array, bridge): parser = ArgumentParser(prog=command) parser.add_argument('mode', choices=['on', 'off']) try: args = parser.parse_args(args_array) except Exception as e: if len(args_array) == 0: if bot.debug: return 'Debugging is on' else: return 'Debugging is off' else: return '\n' + e.args[1] if args.mode == 'on': bot.debug = True return 'Debugging is now on' else: bot.debug = False return 'Debugging is now off'
def irc_connections(bot, command, args_array, bridge): parser = ArgumentParser(prog=command) parser.add_argument('--verbose', '-v', default=False, action='store_true') parser.add_argument('--sort', '-s', default=False, action='store_true') try: args = parser.parse_args(args_array) except Exception as e: return '\n' + e.args[1] n = len(bot.irc.connections) if args.verbose: ret = 'List of IRC connections (' + str(n) + '):' if args.sort: connections = [str(c) for c in bot.irc.connections] connections.sort() else: connections = bot.irc.connections for c in connections: ret += '\n\t' + str(c) else: ret = 'Number of IRC connections: ' + str(n) return ret
def add_xmpp_admin(bot, command, args_array, bridge): parser = ArgumentParser(prog=command) parser.add_argument('jid', type=str) parser.add_argument('--say-level', choices=say_levels.levels, default=say_levels.levels[1]) try: args = parser.parse_args(args_array) except Exception as e: return '\n' + e.args[1] admin = Admin() admin.jid = args.jid admin.say_level = args.say_level bot.admins.append(admin) for b in bot.bridges: for p in b.participants: if p.real_jid != None and xmpp.protocol.JID(args.jid).bareMatch( p.real_jid): p.bot_admin = True return 'XMPP admin added.'