Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/twisted
diff options
context:
space:
mode:
authorChris Porter <slug@quakenet.org>2008-05-14 16:25:43 (GMT)
committer Chris Porter <slug@quakenet.org>2008-05-14 16:25:43 (GMT)
commit3afecc749be6c5805f406995869df8e0f420b038 (patch)
treeb9024fcbcee3e2178a3ed2d7b639648b05b70539 /twisted
parented4d2821bba265c3a917b4479962faa589201ce7 (diff)
Use twisted formats.
Diffstat (limited to 'twisted')
-rw-r--r--twisted/plugins/qwebirc.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/twisted/plugins/qwebirc.py b/twisted/plugins/qwebirc.py
new file mode 100644
index 0000000..394ddfb
--- /dev/null
+++ b/twisted/plugins/qwebirc.py
@@ -0,0 +1,56 @@
+from zope.interface import implements
+
+from twisted.python import usage
+from twisted.internet import task
+from twisted.plugin import IPlugin
+from twisted.application.service import IServiceMaker
+from twisted.application import internet, strports
+from twisted.web import static, server
+
+class Options(usage.Options):
+ optParameters = [["port", "p", "9090","Port to start the server on."],
+ ["logfile", "l", None, "Path to web CLF (Combined Log Format) log file."],
+ ["https", None, None, "Port to listen on for Secure HTTP."],
+ ["certificate", "c", "server.pem", "SSL certificate to use for HTTPS. "],
+ ["privkey", "k", "server.pem", "SSL certificate to use for HTTPS."],
+ ]
+
+ optFlags = [["notracebacks", "n", "Display tracebacks in broken web pages. " +
+ "Displaying tracebacks to users may be security risk!"],
+ ]
+
+ zsh_actions = {"logfile" : "_files -g '*.log'", "certificate" : "_files -g '*.pem'",
+ "privkey" : "_files -g '*.pem'"}
+
+ def postOptions(self):
+ if self['https']:
+ try:
+ from twisted.internet.ssl import DefaultOpenSSLContextFactory
+ except ImportError:
+ raise usage.UsageError("SSL support not installed")
+
+class QWebIRCServiceMaker(object):
+ implements(IServiceMaker, IPlugin)
+ tapname = "qwebirc"
+ description = "QuakeNet web-based IRC client"
+ options = Options
+
+ def makeService(self, config):
+ root = static.File("static/")
+
+ if config['logfile']:
+ site = server.Site(root, logPath=config['logfile'])
+ else:
+ site = server.Site(root)
+
+
+ site.displayTracebacks = not config["notracebacks"]
+ if config['https']:
+ from twisted.internet.ssl import DefaultOpenSSLContextFactory
+ i = internet.SSLServer(int(config['https']), site, DefaultOpenSSLContextFactory(config['privkey'], config['certificate']))
+ else:
+ i = internet.TCPServer(int(config['port']), site)
+
+ return i
+
+serviceMaker = QWebIRCServiceMaker() \ No newline at end of file