[Twisted-Python] websetroot
Moshe Zadka
twisted at moshez.org
Thu Oct 17 03:22:17 MDT 2002
I don't want to check in a new utility without some discussion. Here is the
patch:
diff -urN -x *.pyc -x CVS -x static -x howto Twisted.clean/ChangeLog Twisted/ChangeLog
--- Twisted.clean/ChangeLog Tue Oct 15 07:04:57 2002
+++ Twisted/ChangeLog Thu Oct 17 04:18:18 2002
@@ -1,3 +1,8 @@
+2002-10-17 Moshe Zadka <moshez at twistedmatrix.com>
+
+ * bin/websetroot twisted/scripts/websetroot.py: Added a program to set
+ the root of a web server after the tap exists
+
2002-10-14 Moshe Zadka <moshez at twistedmatrix.com>
* twisted/web/vhost.py: add a virtual host monster to support twisted
diff -urN -x *.pyc -x CVS -x static -x howto Twisted.clean/bin/websetroot Twisted/bin/websetroot
--- Twisted.clean/bin/websetroot Wed Dec 31 18:00:00 1969
+++ Twisted/bin/websetroot Thu Oct 17 03:22:21 2002
@@ -0,0 +1,29 @@
+#!/usr/bin/env python
+
+# Twisted, the Framework of Your Internet
+# Copyright (C) 2001 Matthew W. Lefkowitz
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser General Public
+# License as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+### Twisted Preamble
+# This makes sure that users don't have to set up their environment
+# specially in order to run these programs from bin/.
+import sys, os, string
+if string.find(os.path.abspath(sys.argv[0]), os.sep+'Twisted') != -1:
+ sys.path.insert(0, os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), os.pardir, os.pardir)))
+sys.path.insert(0, os.curdir)
+### end of preamble
+
+from twisted.scripts.websetroot import run
+run()
diff -urN -x *.pyc -x CVS -x static -x howto Twisted.clean/doc/examples/index.html Twisted/doc/examples/index.html
--- Twisted.clean/doc/examples/index.html Thu Oct 17 03:46:45 2002
+++ Twisted/doc/examples/index.html Thu Oct 17 04:20:02 2002
@@ -87,6 +87,7 @@
<li><a href="hello.rpy.py">hello.rpy.py</a></li>
<li><a href="simple.rtl">simple.rtl</a></li>
<li><a href="courier.py">courier.py</a></li>
+ <li><a href="rootscript.py">rootscript.py</a></li>
</ul>
<h2>Obsolete?</h2>
diff -urN -x *.pyc -x CVS -x static -x howto Twisted.clean/doc/examples/rootscript.py Twisted/doc/examples/rootscript.py
--- Twisted.clean/doc/examples/rootscript.py Wed Dec 31 18:00:00 1969
+++ Twisted/doc/examples/rootscript.py Thu Oct 17 03:42:57 2002
@@ -0,0 +1,9 @@
+from twisted.web import vhost, static, script
+
+default = static.Data('text/html', '')
+default.putChild('vhost', vhost.VHostMonsterResource())
+resource = vhost.NameVirtualHost()
+resource.default = default
+file = static.File('static')
+file.processors = {'.rpy': script.ResourceScript}
+resource.addHost('twistedmatrix.com', file)
diff -urN -x *.pyc -x CVS -x static -x howto Twisted.clean/doc/man/index.html Twisted/doc/man/index.html
--- Twisted.clean/doc/man/index.html Thu Oct 3 14:24:18 2002
+++ Twisted/doc/man/index.html Thu Oct 17 04:17:34 2002
@@ -19,6 +19,7 @@
<li><a href="tap2deb.html"> tap2deb</a></li>
<li><a href="tapconvert.html">tapconvert</a></li>
<li><a href="twistd.html">twistd</a></li>
+<li><a href="websetroot.html">websetroot</a></li>
</ul>
</body></html>
diff -urN -x *.pyc -x CVS -x static -x howto Twisted.clean/doc/man/websetroot.1 Twisted/doc/man/websetroot.1
--- Twisted.clean/doc/man/websetroot.1 Wed Dec 31 18:00:00 1969
+++ Twisted/doc/man/websetroot.1 Thu Oct 17 04:17:15 2002
@@ -0,0 +1,36 @@
+.TH WEBSETROOT "1" "July 2001" "" ""
+.SH NAME
+websetroot \- set the root of a Twisted web server
+.SH SYNOPSIS
+.B websetroot {-f \fItapfile\fR | -y \fIcodefile\fR | -x \fIXML\fR | -s \fIAOT\fR } {--pickle \fIpickle\fR | --script \fIscript\fR } [ -e ] [--port \fIport\fR]
+.B websetroot --help
+.SH DESCRIPTION
+.PP
+The \fB\--help\fR prints out a usage message to standard output.
+.TP \fB-e\fR, \fB--encrypted\fR
+The specified tap/aos/xml file is encrypted.
+.TP \fB-p\fR, \fB--port\fR <port>
+The port the web server is running on [default: 80]
+.TP \fB-f\fR, \fB--file\fR <file>
+read the given .tap file [default: twistd.tap]
+.TP \fB-y\fR, \fB--python\fR <file>
+read an application from within a Python file
+.TP \fB-x\fR, \fB--xml\fR <file>
+Read an application from a .tax file (Marmalade format).
+.TP \fB-s\fR, \fB--source\fR <file>
+Read an application from a .tas file (AOT format).
+.TP \fB--script\fR <file>
+Read the root resource from the given resource script file
+.TP \fB--pickle\fR <file>
+Read the root resource from the given resource pickle file
+.SH AUTHOR
+Written by Moshe Zadka, based on websetroot's help messages
+.SH "REPORTING BUGS"
+Report bugs to <twisted-python at twistedmatrix.com>.
+.SH COPYRIGHT
+Copyright \(co 2000 Matthew W. Lefkowitz
+.br
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+mktap(1)
diff -urN -x *.pyc -x CVS -x static -x howto Twisted.clean/twisted/scripts/websetroot.py Twisted/twisted/scripts/websetroot.py
--- Twisted.clean/twisted/scripts/websetroot.py Wed Dec 31 18:00:00 1969
+++ Twisted/twisted/scripts/websetroot.py Thu Oct 17 03:33:35 2002
@@ -0,0 +1,75 @@
+# Twisted, the Framework of Your Internet
+# Copyright (C) 2001-2002 Matthew W. Lefkowitz
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser General Public
+# License as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+from twisted.scripts import twistd
+from twisted.python import usage
+
+class Options(usage.Options):
+
+ optFlags = [
+ ['encrypted', 'e' ,
+ "The specified tap/aos/xml file is encrypted."]
+ ]
+
+
+ optParameters = [
+ ['port','p', 80,
+ "The port the web server is running on"],
+ ['file','f','twistd.tap',
+ "read the given .tap file"],
+ ['python','y', None,
+ "read an application from within a Python file"],
+ ['xml', 'x', None,
+ "Read an application from a .tax file (Marmalade format)."],
+ ['source', 's', None,
+ "Read an application from a .tas file (AOT format)."],
+ ]
+
+ def opt_script(self, scriptname):
+ d = {}
+ execfile(scriptname, d)
+ self['root'] = d['resource']
+
+ def opt_pickle(self, picklename):
+ self['root'] = cPickle.load(open(picklename))
+
+
+def getFactory(app, port):
+ for (num, fact, _, _) in app.tcpPorts:
+ if num == port:
+ return fact
+ raise LookupError('no such port')
+
+def main(config):
+ if config['encrypted']:
+ import getpass
+ passphrase = getpass.getpass('Passphrase: ')
+ else:
+ passphrase = None
+ application = twistd.loadApplication(config, passphrase)
+ site = getFactory(application, int(config['port']))
+ site.resource = config['root']
+ application.save()
+
+
+def run():
+ import sys
+ config = Options()
+ config.parseOptions()
+ try:
+ main(config)
+ except LookupError, err:
+ sys.exit(sys.argv[0]+": "+str(err))
More information about the Twisted-Python
mailing list