2 # -*- coding: utf-8 -*-
4 A MUC ban bot based on "Real-Time Block List" service.
10 from argparse import ArgumentParser
11 from getpass import getpass
13 from ..sid import MUCBot
14 from ..rtbl import RTBL
18 # Setup the command line arguments.
19 parser = ArgumentParser()
21 # Output verbosity options.
22 parser.add_argument("-q", "--quiet", help="set logging to ERROR",
23 action="store_const", dest="loglevel",
24 const=logging.ERROR, default=logging.INFO)
25 parser.add_argument("-d", "--debug", help="set logging to DEBUG",
26 action="store_const", dest="loglevel",
27 const=logging.DEBUG, default=logging.INFO)
29 # JID and password options.
30 parser.add_argument("-j", "--jid", dest="jid",
32 parser.add_argument("-p", "--password", dest="password",
33 help="password to use")
34 parser.add_argument("-r", "--room", dest="room",
36 parser.add_argument("-n", "--nick", dest="nick",
39 parser.add_argument("-b", "--rtbl", dest="rtbl",
40 help="Real-Time Block List (RTBL) service to use (ie. xmppbl.org)")
42 args = parser.parse_args()
45 logging.basicConfig(level=args.loglevel,
46 format='%(levelname)-8s %(message)s')
49 args.jid = input("Username: ")
50 if args.password is None:
51 args.password = getpass("Password: ")
53 args.room = input("Room: ")
55 args.rtbl = input("Real-Time Block List to use: ")
57 RTBL.pubsub_server = args.rtbl
59 xmpp = MUCBot(args.jid, args.password, args.room, args.nick)
61 xmpp.register_bot_plugin(RTBL)
63 # Connect to the XMPP server and start processing XMPP stanzas.
67 except KeyboardInterrupt:
68 xmpp.shutdown_plugins()
71 if __name__ == '__main__':