mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-04-07 10:56:49 +00:00
rollback the feature of making "ambient upload authority" configurable
This reverses some, but not all, of the changes that were committed in the following set of patches. rolling back: Sun Jan 18 09:54:30 MST 2009 toby.murray * add 'web.ambient_upload_authority' as a paramater to tahoe.cfg M ./src/allmydata/client.py -1 +3 M ./src/allmydata/test/common.py -7 +9 A ./src/allmydata/test/test_ambient_upload_authority.py M ./src/allmydata/web/root.py +12 M ./src/allmydata/webish.py -1 +4 Sun Jan 18 09:56:08 MST 2009 zooko@zooko.com * trivial: whitespace I ran emacs's "M-x whitespace-cleanup" on the files that Toby's recent patch had touched that had trailing whitespace on some lines. M ./src/allmydata/test/test_ambient_upload_authority.py -9 +8 M ./src/allmydata/web/root.py -2 +1 M ./src/allmydata/webish.py -2 +1 Mon Jan 19 14:16:19 MST 2009 zooko@zooko.com * trivial: remove unused import noticed by pyflakes M ./src/allmydata/test/test_ambient_upload_authority.py -1 Mon Jan 19 21:38:35 MST 2009 toby.murray * doc: describe web.ambient_upload_authority M ./docs/configuration.txt +14 M ./docs/frontends/webapi.txt +11 Mon Jan 19 21:38:57 MST 2009 zooko@zooko.com * doc: add Toby Murray to the CREDITS M ./CREDITS +4
This commit is contained in:
parent
0dbc0f1194
commit
7d91dc5efe
@ -70,20 +70,6 @@ web.static = (string, optional)
|
||||
With the default settings, http://127.0.0.1:3456/static/foo.html will serve
|
||||
the contents of $BASEDIR/public_html/foo.html .
|
||||
|
||||
web.ambient_upload_authority = (boolean, optional)
|
||||
|
||||
This controls whether a node's web server should provide "ambient"
|
||||
upload/create authority by controlling whether it responds to PUT and
|
||||
POST requests that do not contain a cap -- i.e. those for uploading
|
||||
new unlinked files and creating new unlinked directories. If set to
|
||||
True, a node will respond to these requests as usual. If set to
|
||||
False, a node will instead refuse these requests, returning an HTTP
|
||||
status of 'Bad Request'. The default value is True.
|
||||
|
||||
Note that setting this to False does not prevent performing operations
|
||||
on files and directories that already exist, since all of these operations
|
||||
require the presentation of a cap.
|
||||
|
||||
tub.port = (integer, optional)
|
||||
|
||||
This controls which port the node uses to accept Foolscap connections from
|
||||
|
@ -320,9 +320,6 @@ PUT /uri
|
||||
mutable file, and return its write-cap in the HTTP respose. The default is
|
||||
to create an immutable file, returning the read-cap as a response.
|
||||
|
||||
Note that this operation is available only when the configuration setting
|
||||
'web.ambient_upload_authority' is not False (see configuration.txt).
|
||||
|
||||
=== Creating A New Directory ===
|
||||
|
||||
POST /uri?t=mkdir
|
||||
@ -333,9 +330,6 @@ PUT /uri?t=mkdir
|
||||
virtual drive. The "PUT" operation is provided for backwards compatibility:
|
||||
new code should use POST.
|
||||
|
||||
Note that these operations are available only when the configuration setting
|
||||
'web.ambient_upload_authority' is not False (see configuration.txt).
|
||||
|
||||
POST /uri/$DIRCAP/[SUBDIRS../]SUBDIR?t=mkdir
|
||||
PUT /uri/$DIRCAP/[SUBDIRS../]SUBDIR?t=mkdir
|
||||
|
||||
@ -578,9 +572,6 @@ POST /uri?t=mkdir
|
||||
"false"), then the HTTP response body will simply be the write-cap of the
|
||||
new directory.
|
||||
|
||||
Note that this operation is available only when the configuration setting
|
||||
'web.ambient_upload_authority' is not False (see configuration.txt).
|
||||
|
||||
POST /uri/$DIRCAP/[SUBDIRS../]?t=mkdir&name=CHILDNAME
|
||||
|
||||
This creates a new directory as a child of the designated SUBDIR. This will
|
||||
@ -625,8 +616,6 @@ POST /uri?t=upload
|
||||
the upload results page. The default is to create an immutable file,
|
||||
returning the upload results page as a response.
|
||||
|
||||
Note that this operation is available only when the configuration setting
|
||||
'web.ambient_upload_authority' is not False (see configuration.txt).
|
||||
|
||||
POST /uri/$DIRCAP/[SUBDIRS../]?t=upload
|
||||
|
||||
|
@ -266,9 +266,7 @@ class Client(node.Node, pollmixin.PollMixin):
|
||||
nodeurl_path = os.path.join(self.basedir, "node.url")
|
||||
staticdir = self.get_config("node", "web.static", "public_html")
|
||||
staticdir = os.path.expanduser(staticdir)
|
||||
# should we provide ambient upload authority?
|
||||
ambientUploadAuthority = self.get_config("node", "web.ambient_upload_authority", True, boolean=True)
|
||||
ws = WebishServer(webport, nodeurl_path, staticdir, ambientUploadAuthority)
|
||||
ws = WebishServer(webport, nodeurl_path, staticdir)
|
||||
self.add_service(ws)
|
||||
|
||||
def init_ftp_server(self):
|
||||
|
@ -1,95 +0,0 @@
|
||||
import os
|
||||
|
||||
from twisted.trial import unittest
|
||||
from twisted.internet import defer, reactor
|
||||
from twisted.web import client, http
|
||||
|
||||
from allmydata.test.common import SystemTestMixin
|
||||
|
||||
|
||||
class TestCase(SystemTestMixin, unittest.TestCase):
|
||||
|
||||
def setAmbientUploadAuthority(self,ambientUploadAuthority):
|
||||
self.ambientUploadAuthority = ambientUploadAuthority
|
||||
|
||||
def _test_ambient_upload_authority(self):
|
||||
self.webip = "127.0.0.1"
|
||||
self.webport = 3456
|
||||
self.basedir = self.mktemp()
|
||||
|
||||
# set up an introducer and a node
|
||||
d = self.set_up_nodes(1)
|
||||
d.addCallback(self._test_ambient_upload_authority2)
|
||||
d.addErrback(self.fail)
|
||||
return d
|
||||
|
||||
def _set_up_nodes_extra_config(self):
|
||||
# we need to remove the 'webport' old-style config file
|
||||
# or else the node won't start
|
||||
os.remove(os.path.join(self.getdir("client0"), "webport"))
|
||||
f = open(os.path.join(self.getdir("client0"), "tahoe.cfg"), "wt")
|
||||
f.write("\n")
|
||||
f.write("[node]\n")
|
||||
f.write("web.ambient_upload_authority = %s\n" % ("false","true")[self.ambientUploadAuthority])
|
||||
f.write("web.port = tcp:%d:interface=%s\n" % (self.webport, self.webip))
|
||||
f.write("\n")
|
||||
f.write("[client]\n")
|
||||
f.write("introducer.furl = %s\n" % self.introducer_furl)
|
||||
f.write("\n")
|
||||
f.write("[storage]\n")
|
||||
f.write("enabled = true\n")
|
||||
f.write("\n")
|
||||
f.close()
|
||||
|
||||
|
||||
def _test_ambient_upload_authority2(self, ignored=None):
|
||||
content_type = 'multipart/form-data; boundary=----------ThIs_Is_tHe_bouNdaRY_$'
|
||||
body = '------------ThIs_Is_tHe_bouNdaRY_$\r\nContent-Disposition: form-data; name="t"\r\n\r\nupload\r\n------------ThIs_Is_tHe_bouNdaRY_$\r\nContent-Disposition: form-data; name="file"; filename="file1.txt"\r\nContent-Type: application/octet-stream\r\n\r\nsome test text\r\n------------ThIs_Is_tHe_bouNdaRY_$--\r\n'
|
||||
headers = {'Content-Type': content_type,
|
||||
'Content-Length': len(body)}
|
||||
|
||||
deferreds = []
|
||||
expected = (http.BAD_REQUEST, http.OK)[self.ambientUploadAuthority]
|
||||
|
||||
# try to upload using the local web client
|
||||
def tryRequest(pathetc, method, postdata=None, headers=None):
|
||||
url = "http://%s:%d/%s" % (self.webip, self.webport, pathetc)
|
||||
f = client.HTTPClientFactory(url,method, postdata, headers)
|
||||
f.deferred.addCallback(self._cbCheckResponse,[f,expected])
|
||||
f.deferred.addErrback(self._cbCheckResponse,[f,expected])
|
||||
deferreds.append(f.deferred)
|
||||
reactor.connectTCP(self.webip, self.webport, f)
|
||||
|
||||
tryRequest("uri","PUT","non contents\r\n")
|
||||
tryRequest("uri?t=mkdir","PUT")
|
||||
tryRequest("uri?t=mkdir","POST")
|
||||
tryRequest("uri?t=upload","POST",body,headers)
|
||||
|
||||
# give us one deferred that will fire iff all of the above succeed
|
||||
dlist = defer.DeferredList(deferreds,fireOnOneCallback=False,
|
||||
fireOnOneErrback=True)
|
||||
dlist.addErrback(self.fail)
|
||||
|
||||
return dlist
|
||||
|
||||
def _cbCheckResponse(self, ignored, cmp):
|
||||
r = cmp[0]
|
||||
expected = cmp[1]
|
||||
self.failUnless(int(r.status) == expected)
|
||||
|
||||
|
||||
class TestAmbientUploadAuthorityEnabled(TestCase):
|
||||
def setUp(self):
|
||||
TestCase.setUp(self)
|
||||
self.setAmbientUploadAuthority(True)
|
||||
|
||||
def test_ambient_upload_authority_enabled(self):
|
||||
return self._test_ambient_upload_authority()
|
||||
|
||||
class TestAmbientUploadAuthorityDisabled(TestCase):
|
||||
def setUp(self):
|
||||
TestCase.setUp(self)
|
||||
self.setAmbientUploadAuthority(False)
|
||||
|
||||
def test_ambient_upload_authority_disabled(self):
|
||||
return self._test_ambient_upload_authority()
|
@ -22,9 +22,6 @@ class URIHandler(RenderMixin, rend.Page):
|
||||
# I live at /uri . There are several operations defined on /uri itself,
|
||||
# mostly involved with creation of unlinked files and directories.
|
||||
|
||||
def setAmbientUploadAuthority(self, ambientUploadAuthority):
|
||||
self.ambientUploadAuthority = ambientUploadAuthority
|
||||
|
||||
def render_GET(self, ctx):
|
||||
req = IRequest(ctx)
|
||||
uri = get_arg(req, "uri", None)
|
||||
@ -38,9 +35,6 @@ class URIHandler(RenderMixin, rend.Page):
|
||||
return there
|
||||
|
||||
def render_PUT(self, ctx):
|
||||
if not self.ambientUploadAuthority:
|
||||
raise WebError("/uri handling of PUT not enabled on this node")
|
||||
|
||||
req = IRequest(ctx)
|
||||
# either "PUT /uri" to create an unlinked file, or
|
||||
# "PUT /uri?t=mkdir" to create an unlinked directory
|
||||
@ -58,9 +52,6 @@ class URIHandler(RenderMixin, rend.Page):
|
||||
raise WebError(errmsg, http.BAD_REQUEST)
|
||||
|
||||
def render_POST(self, ctx):
|
||||
if not self.ambientUploadAuthority:
|
||||
raise WebError("/uri handling of POST not enabled on this node")
|
||||
|
||||
# "POST /uri?t=upload&file=newfile" to upload an
|
||||
# unlinked file or "POST /uri?t=mkdir" to create a
|
||||
# new directory
|
||||
@ -130,9 +121,6 @@ class Root(rend.Page):
|
||||
rend.Page.__init__(self, original)
|
||||
self.child_operations = operations.OphandleTable()
|
||||
|
||||
def setAmbientUploadAuthority(self, ambientUploadAuthority):
|
||||
self.child_uri.setAmbientUploadAuthority(ambientUploadAuthority)
|
||||
|
||||
child_uri = URIHandler()
|
||||
child_cap = URIHandler()
|
||||
child_file = FileHandler()
|
||||
|
@ -122,13 +122,10 @@ class WebishServer(service.MultiService):
|
||||
name = "webish"
|
||||
root_class = root.Root
|
||||
|
||||
def __init__(self, webport, nodeurl_path=None, staticdir=None,
|
||||
ambientUploadAuthority=False):
|
||||
def __init__(self, webport, nodeurl_path=None, staticdir=None):
|
||||
service.MultiService.__init__(self)
|
||||
self.webport = webport
|
||||
self.root = self.root_class()
|
||||
if self.root_class == root.Root:
|
||||
self.root.setAmbientUploadAuthority(ambientUploadAuthority)
|
||||
self.site = site = appserver.NevowSite(self.root)
|
||||
self.site.requestFactory = MyRequest
|
||||
if self.root.child_operations:
|
||||
|
Loading…
x
Reference in New Issue
Block a user