summaryrefslogtreecommitdiff
path: root/startirc.py
blob: c3a6cec8e4aefab4798587608548124ad27a366b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/python -i
import os
import re
import time
import logger
import signal
import figlet
import cannon
import wallet
import autoexec
import sys
import irc
import bouncer
import readline
import rlcompleter
readline.parse_and_bind("tab: complete")

networks = {}


def quit(quitmsg="Goodbye!"):
    global networks
    addons = []
    for IRC in networks.values():
        if IRC.isAlive():
            IRC.quit(quitmsg)
    while any([IRC.isAlive() for IRC in networks.values()]):
        time.sleep(0.25)
    for IRC in networks.values():
        for addon in list(IRC.addons):
            IRC.rmAddon(addon)
            if addon not in addons:
                addons.append(addon)
    for addon in addons:
        if "stop" in dir(addon) and callable(addon.stop) and "isAlive" in dir(addon) and callable(addon.isAlive) and addon.isAlive():
            try:
                addon.stop()
            except:
                pass
    print "Goodbye!"
    sys.exit()

termcaught = False


def sigterm(signum, frame):
    global termcaught
    if not termcaught:
        termcaught = True
        quit("Caught SIGTERM")

signal.signal(signal.SIGTERM, sigterm)

logroot = os.path.join(os.environ["HOME"], "IRC")

InsomniaIRC = networks["InsomniaIRC"] = irc.Connection(
    server="perseus.insomniairc.net", ipv6=False, ssl=True, log=open("/dev/null", "w"))

ax = autoexec.Autoexec()
log = logger.Logger(logroot)

### Be sure to generate your own cert.pem and key.pem files!
BNC = bouncer.Bouncer(
    "", 16698, ssl=True, certfile="cert.pem", keyfile="key.pem", autoaway="I'm off to see the wizard!")

for (label, IRC) in networks.items():
    IRC.addAddon(log, label=label)
    ### The password is 'hunter2'
    IRC.addAddon(BNC, label=label, passwd="6b97ed68d14eb3f1aa959ce5d49c7dc612e1eb1dafd73b1e705847483fd6a6c809f2ceb4e8df6ff9984c6298ff0285cace6614bf8daa9f0070101b6c89899e22", hashtype="sha512")

InsomniaIRC.addAddon(ax, label="InsomniaIRC", autojoin=["#chat"])

for (label, IRC) in networks.items():
    IRC.start()