]> jfr.im git - irc/quakenet/qwebirc.git/blame - twisted/plugins/webirc.py
Now works.
[irc/quakenet/qwebirc.git] / twisted / plugins / webirc.py
CommitLineData
d4e3371b
CP
1from zope.interface import implements\r
2\r
3from twisted.python import usage\r
4from twisted.internet import task\r
5from twisted.plugin import IPlugin\r
6from twisted.application.service import IServiceMaker\r
7from twisted.application import internet, strports\r
8from twisted.web import static, server\r
9\r
e1b81267
CP
10from qwebirc import RootSite\r
11\r
d4e3371b
CP
12class Options(usage.Options):\r
13 optParameters = [["port", "p", "9090","Port to start the server on."],\r
14 ["logfile", "l", None, "Path to web CLF (Combined Log Format) log file."],\r
15 ["https", None, None, "Port to listen on for Secure HTTP."],\r
16 ["certificate", "c", "server.pem", "SSL certificate to use for HTTPS. "],\r
17 ["privkey", "k", "server.pem", "SSL certificate to use for HTTPS."],\r
e1b81267 18 ["staticpath", "s", "static", "Path to static content"],\r
d4e3371b
CP
19 ]\r
20\r
21 optFlags = [["notracebacks", "n", "Display tracebacks in broken web pages. " +\r
22 "Displaying tracebacks to users may be security risk!"],\r
23 ]\r
24 \r
25 zsh_actions = {"logfile" : "_files -g '*.log'", "certificate" : "_files -g '*.pem'",\r
26 "privkey" : "_files -g '*.pem'"} \r
27\r
28 def postOptions(self):\r
29 if self['https']:\r
30 try:\r
31 from twisted.internet.ssl import DefaultOpenSSLContextFactory\r
32 except ImportError:\r
33 raise usage.UsageError("SSL support not installed")\r
34 \r
35class QWebIRCServiceMaker(object):\r
36 implements(IServiceMaker, IPlugin)\r
37 tapname = "qwebirc"\r
38 description = "QuakeNet web-based IRC client"\r
39 options = Options\r
40\r
e1b81267 41 \r
d4e3371b 42 def makeService(self, config):\r
d4e3371b 43 if config['logfile']:\r
e1b81267 44 site = RootSite(config['staticpath'], logPath=config['logfile'])\r
d4e3371b 45 else:\r
e1b81267 46 site = RootSite(config['staticpath'])\r
d4e3371b
CP
47 \r
48 \r
49 site.displayTracebacks = not config["notracebacks"]\r
50 if config['https']:\r
51 from twisted.internet.ssl import DefaultOpenSSLContextFactory\r
52 i = internet.SSLServer(int(config['https']), site, DefaultOpenSSLContextFactory(config['privkey'], config['certificate']))\r
53 else:\r
54 i = internet.TCPServer(int(config['port']), site)\r
55 \r
56 return i\r
57 \r
58serviceMaker = QWebIRCServiceMaker()