/usr/share/doc/python-twisted-web/examples/fortune.rpy.py is in python-twisted-web 13.2.0-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | # Copyright (c) Twisted Matrix Laboratories.
# See LICENSE for details.
"""
This example demostrates how to render the output of a system process to a
twisted web server.
In order to run this, you need to have fortune installed. Fortune is a simple
game that displays a random message from a database of quotations. You will need
to change the path of the fortune program if it's not in the "/usr/game"
directory.
To test the script, rename the file to fortune.rpy, and move it to any
directory, let's say /var/www/html/
Now, start your Twisted web server:
$ twistd -n web --path /var/www/html/
And visit http://127.0.0.1:8080/fortune.rpy with a web browser.
"""
from twisted.web.resource import Resource
from twisted.web import server
from twisted.internet import utils
from twisted.python import util
class FortuneResource(Resource):
"""
This resource will only repond to HEAD & GET requests.
"""
# Link your fortune program to /usr/games or change the path.
fortune = "/usr/games/fortune"
def render_GET(self, request):
"""
Get a fortune and serve it as the response to this request.
Use L{utils.getProcessOutput}, which spawns a process and returns a
Deferred which fires with its output.
"""
request.write("<pre>\n")
deferred = utils.getProcessOutput(self.fortune)
deferred.addCallback(lambda s:
(request.write(s+"\n"), request.finish()))
deferred.addErrback(lambda s:
(request.write(str(s)), request.finish()))
return server.NOT_DONE_YET
resource = FortuneResource()
|