summaryrefslogtreecommitdiff
path: root/startirc.py
blob: 6d0d8e78e98a8f5176c558be66f8fd0223471f17 (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
#!/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
readline.parse_and_bind("tab: complete")

networks = {}


def quit(quitmsg="Goodbye!"):
    global networks
    modules = []
    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 module in list(IRC.modules):
            IRC.rmModule(module)
            if module not in modules:
                modules.append(module)
    for module in modules:
        if "stop" in dir(module) and callable(module.stop) and "isAlive" in dir(module) and callable(module.isAlive) and module.isAlive():
            try:
                module.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")

insomnialog = open(os.path.join(logroot, "insomnia.log"), "a")
InsomniaIRC = networks["InsomniaIRC"] = irc.Connection(
    server="irc.insomniairc.net", ipv6=False, ssl=True, log=insomnialog)

ax = autoexec.Autoexec()
log = logger.Logger(logroot)
BNC = bouncer.Bouncer(
    "", 16698, ssl=True, certfile="cert.pem", keyfile="key.pem")

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

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

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