]> kaliko git repositories - sid.git/blob - sid/cli/rtbl.py
Expose a CLI interface for rtbl plugin
[sid.git] / sid / cli / rtbl.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 """
4 A MUC ban bot based on "Real-Time Block List" service.
5 """
6
7 import getpass
8 import logging
9
10 from argparse import ArgumentParser
11 from getpass import getpass
12
13 from ..sid import MUCBot
14 from ..rtbl import RTBL
15
16
17 def main():
18     # Setup the command line arguments.
19     parser = ArgumentParser()
20
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)
28
29     # JID and password options.
30     parser.add_argument("-j", "--jid", dest="jid",
31                         help="JID to use")
32     parser.add_argument("-p", "--password", dest="password",
33                         help="password to use")
34     parser.add_argument("-r", "--room", dest="room",
35                         help="Room to join")
36     parser.add_argument("-n", "--nick", dest="nick",
37                         default="sid-rtbl",
38                         help="Bot nickname")
39     parser.add_argument("-b", "--rtbl", dest="rtbl",
40                         help="Real-Time Block List (RTBL) service to use (ie. xmppbl.org)")
41
42     args = parser.parse_args()
43
44     # Setup logging.
45     logging.basicConfig(level=args.loglevel,
46                         format='%(levelname)-8s %(message)s')
47
48     if args.jid is None:
49         args.jid = input("Username: ")
50     if args.password is None:
51         args.password = getpass("Password: ")
52     if args.room is None:
53         args.room = input("Room: ")
54     if args.rtbl is None:
55         args.rtbl = input("Real-Time Block List to use: ")
56
57     RTBL.pubsub_server = args.rtbl
58     # Instanciate the bot
59     xmpp = MUCBot(args.jid, args.password, args.room, args.nick)
60     # Register plugin
61     xmpp.register_bot_plugin(RTBL)
62
63     # Connect to the XMPP server and start processing XMPP stanzas.
64     try:
65         xmpp.connect()
66         xmpp.process()
67     except KeyboardInterrupt:
68         xmpp.shutdown_plugins()
69
70
71 if __name__ == '__main__':
72     main()