summaryrefslogtreecommitdiff
path: root/startirc.py
blob: 2acf1b991f096965f20190cd0dcf06530b3730bb (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
#!/usr/bin/python -i
import os, re, time, logger, signal, figlet, cannon, wallet, autoexec, sys, irc, bouncer, 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()