forked from NURDspace/nurdbar
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathccstart.py
executable file
·84 lines (66 loc) · 2.39 KB
/
ccstart.py
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
75
76
77
78
79
80
81
82
83
#!/usr/bin/env python
#!/usr/bin/env python
from twisted.internet import reactor
from nurdbar import NurdBar
import sys, os
import logging
import pkgutil
from nurdbar.plugins.api import *
import curses
import signal
from cursesclient import cursesirc
from cursesclient import twirc
logging.basicConfig(level=logging.DEBUG)
log=logging.getLogger(__name__)
#fh = logging.FileHandler('logging.log')
#fh.setLevel(logging.DEBUG)
CHANNEL = '#nurds'
FORGETTIME = 20
SCREENSRATIO=0.333
NICKNAME = 'popcorn'
DEBUGMODE = False
CATCHEXIT = True
def sighandler(signum,frame):
pass
if CATCHEXIT:
signal.signal(signal.SIGINT, sighandler)
signal.signal(signal.SIGTERM, sighandler)
signal.signal(signal.SIGTSTP, sighandler)
def importPlugins(plugindir):
log.debug('importing plugins from %s'%plugindir)
print('contents of plugindir: %s'%os.listdir(plugindir))
for i in pkgutil.iter_modules([plugindir]):
log.debug('importing %s'%i[1])
if i[1]!='api':
i[0].find_module(i[1]).load_module('%s.%s'%(plugindir,i[1]))
def main(configfile):
log.debug('Starting interfaces')
stdscr = curses.initscr() # initialize curses
screen = cursesirc.Screen(stdscr,SCREENSRATIO) # create Screen object
stdscr.refresh()
bar=NurdBar(configfile)
importPlugins('nurdbar/plugins')
if bar.config.has_option('plugins','plugindir'):
plugindir=bar.config.get('plugins','plugindir')
importPlugins(plugindir)
for portnum,factory in pluginregistry['tcpinterfaceplugin'].getPlugins():
reactor.listenTCP(portnum, factory(bar))
for factory in pluginregistry['transportinterfaceplugin'].getPlugins():
factory(bar,reactor)
for factory in pluginregistry['cursesinterfaceplugin'].getPlugins():
factory(bar,screen,reactor)
ircFactory = twirc.IRCFactory(screen, NICKNAME, CHANNEL, FORGETTIME, DEBUGMODE)
reactor.addReader(screen) # add screen object as a reader to the reactor
reactor.connectTCP("irc.oftc.net",6667,ircFactory) # connect to IRC
reactor.run() # have fun!
screen.close()
if __name__=='__main__':
try:
configfile=sys.argv[1]
except:
configfile = 'config.cfg'
if not os.path.isfile(configfile):
logging.warn('No config.cfg file exists, creating a blank one.')
with open (configfile,'a'):
os.utime(configfile,None)
main(configfile)