X-Git-Url: http://git.kaliko.me/?p=sid.git;a=blobdiff_plain;f=sid%2Fcli%2Frtbl.py;fp=sid%2Fcli%2Frtbl.py;h=87d552fda49020207eff75e2ce78adb9d6d2f6b3;hp=0000000000000000000000000000000000000000;hb=95c99b21c39e37d0f3ca2715642b28af990c379a;hpb=a8273fcb65b081ee9ebda42a0f39f071850d8f66 diff --git a/sid/cli/rtbl.py b/sid/cli/rtbl.py new file mode 100755 index 0000000..87d552f --- /dev/null +++ b/sid/cli/rtbl.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +A MUC ban bot based on "Real-Time Block List" service. +""" + +import getpass +import logging + +from argparse import ArgumentParser +from getpass import getpass + +from ..sid import MUCBot +from ..rtbl import RTBL + + +def main(): + # Setup the command line arguments. + parser = ArgumentParser() + + # Output verbosity options. + parser.add_argument("-q", "--quiet", help="set logging to ERROR", + action="store_const", dest="loglevel", + const=logging.ERROR, default=logging.INFO) + parser.add_argument("-d", "--debug", help="set logging to DEBUG", + action="store_const", dest="loglevel", + const=logging.DEBUG, default=logging.INFO) + + # JID and password options. + parser.add_argument("-j", "--jid", dest="jid", + help="JID to use") + parser.add_argument("-p", "--password", dest="password", + help="password to use") + parser.add_argument("-r", "--room", dest="room", + help="Room to join") + parser.add_argument("-n", "--nick", dest="nick", + default="sid-rtbl", + help="Bot nickname") + parser.add_argument("-b", "--rtbl", dest="rtbl", + help="Real-Time Block List (RTBL) service to use (ie. xmppbl.org)") + + args = parser.parse_args() + + # Setup logging. + logging.basicConfig(level=args.loglevel, + format='%(levelname)-8s %(message)s') + + if args.jid is None: + args.jid = input("Username: ") + if args.password is None: + args.password = getpass("Password: ") + if args.room is None: + args.room = input("Room: ") + if args.rtbl is None: + args.rtbl = input("Real-Time Block List to use: ") + + RTBL.pubsub_server = args.rtbl + # Instanciate the bot + xmpp = MUCBot(args.jid, args.password, args.room, args.nick) + # Register plugin + xmpp.register_bot_plugin(RTBL) + + # Connect to the XMPP server and start processing XMPP stanzas. + try: + xmpp.connect() + xmpp.process() + except KeyboardInterrupt: + xmpp.shutdown_plugins() + + +if __name__ == '__main__': + main()