Commit Graph

102 Commits

Author SHA1 Message Date
Brian Warner
b257f905a0 webish.py: handle asynchronous checker results.
Thanks to robk for pointing out that Nevow will accept a Deferred almost
everywhere. In this case, we just pass a Deferred into ctx.fillSlots(). One
quirk: nevow doesn't evaluate all rows of the table in parallel: using a slow
Deferred in a slot in one row seems to stall the next row until that one has
fired, probably to simplify the flattening of the HTML.
2007-10-30 17:00:37 -07:00
Brian Warner
42bd2bcf8e webish: tolerate not having a checker, since some unit tests don't make one 2007-10-23 17:35:31 -07:00
Brian Warner
046bda2b47 webish: add checker results and a 'Check' button to the web interface 2007-10-23 17:23:57 -07:00
Zooko O'Whielacronx
d7af8ae677 improve code coverage by removing untested raise RuntimeError and replacing it with tested assert 2007-10-26 18:37:40 -07:00
czooko
d589c385e6 make the anchor text in the WUI be descriptive of the target -- not "Click Here!"! 2007-10-22 16:56:30 -07:00
Brian Warner
a29ab33379 webish: write node.url, for the benefit of CLI tools 2007-10-11 01:38:04 -07:00
Brian Warner
1340c484c6 download.py: use producer/consumer to reduce memory usage, closes #129.
If the DownloadTarget is also an IConsumer, give it control of the brakes
by offering ourselves to target.registerProducer(). When they tell us to
pause, set a flag, which is checked between segment downloads and decodes.
webish.py: make WebDownloadTarget an IConsumer and pass control along to
the http.Request, which already knows how to be an IConsumer.
This reduces the memory footprint of stalled HTTP GETs to a bare minimum,
and thus closes #129.
2007-09-19 00:34:47 -07:00
Brian Warner
b7c18d6505 webish: improve test coverage 2007-09-17 01:53:46 -07:00
Brian Warner
d5ed60e4ad webish: upload: when the localdir= doesn't exist, say so in the HTTP response 2007-09-15 12:49:07 -07:00
Brian Warner
db3f11648c webish: implement 'PUT /uri' (to create anonymous files) 2007-09-05 17:12:27 -07:00
Brian Warner
5946985c07 add a provisioning utility page which shows necessary storage space and transfer rates for grids of various sizes 2007-08-26 23:44:24 -07:00
Brian Warner
0a39430730 webish: strip leading/tailing whitespace from user-provided filenames, to avoid confusion 2007-08-25 12:05:24 -07:00
Brian Warner
44db5fd8a2 webish: strip leading/tailing whitespace from user-provided URIs 2007-08-25 12:05:06 -07:00
Zooko O'Whielacronx
427bf2cdc9 change name of the query "allow_local_access()?" to "local_access_is_allowed()"
So as to avoid confusing it with the setter method  
"allow_local_access(allowed=True)".
2007-08-22 10:32:00 -07:00
Brian Warner
3e1c417f81 webish: modify JSON to match zooko's proposed API changes in #118 2007-08-23 13:00:39 -07:00
Brian Warner
f3353ee5e4 web: replace FILE links with /uri -based ones, to prevent an XSS attack against the secret vdrive URI contained in the current URL 2007-08-22 17:35:01 -07:00
Brian Warner
4de5767c98 web: remove /vdrive/private, replace with a start.html file that points at the /uri/PRIVATE_URI, to prevent XSRF attacks 2007-08-22 14:54:34 -07:00
Brian Warner
ee6a6c79fa webish.py: allow users to delete (but not create) empty-named files. Closes #94. 2007-08-15 23:14:05 -07:00
Brian Warner
c1da0c11bc webish: implement replace= for POST commands 2007-08-15 15:21:38 -07:00
Brian Warner
1752c9e29e webish: implement replace= for PUT commands 2007-08-15 13:22:23 -07:00
Brian Warner
179d5462c0 webish: look for when_done= in POST fields as well as queryargs. Closes #101.
We need to look in the fields because that's how we build the mkdir/upload
forms. Without this, uploading or creating directories would leave us on a
page that had just a URI, instead of something actually useful to a human.
2007-08-13 17:45:02 -07:00
Brian Warner
6c6c62037d fix pyflakes warnings from recent b32decode change 2007-08-12 16:33:51 -07:00
Zooko O'Whielacronx
42f8e57416 don't over-encode the nodeid many times with ascii-encoding 2007-08-12 10:29:38 -07:00
Brian Warner
2f5a27316f webish: localfile=/localdir= are now disabled by default, a special switch is required to enable them 2007-08-10 18:21:22 -07:00
Brian Warner
9281a0aedc webish: reduce POST memory footprint by overriding http.Request
The original twisted.web.http.Request class has a requestReceived method
that parses the form body (in the request's .content filehandle) using
the stdlib cgi.parse_multipart() function. parse_multipart() consumes a
lot of memory when handling large file uploads, because it holds the
arguments entirely in RAM. Nevow's subclass of Request uses cgi.FieldStorage
instead, which is much more memory-efficient.

This patch uses a local subclass of Request and a modified copy of the
requestReceived method. It disables the cgi.parse_multipart parsing and
instead relies upon Nevow's use of FieldStorage. Our code must look for
form elements (which come from the body of the POST request) in req.fields,
rather than assuming that they will be copied into req.args (which now
only contains the query arguments that appear in the URL).

As a result, memory usage is no longer inflated by the size of the file
being uploaded in a POST upload request. Note that cgi.FieldStorage uses
temporary files (tempfile.TemporaryFile) to hold the data.

This closes #29.
2007-08-10 17:25:33 -07:00
Brian Warner
b6ff38e4c7 webish.POSTHandler: fix typo that meant we didn't look for 'name' in req.fields 2007-08-10 17:25:28 -07:00
Brian Warner
1d9a58977f uri: implement URI-processing classes, IFileURI/IDirnodeURI, use internally 2007-07-21 15:40:36 -07:00
Brian Warner
a7f04616bf webish: improve test coverage further 2007-07-17 12:28:29 -07:00
Brian Warner
3197e1d39b webish: improve test coverage of WebDownloadTarget 2007-07-17 12:16:45 -07:00
robk-org
920fed7f2a added unit test to webish's rename function
added unit tests to test various permutations of the rename function, and
some sanity checks on the rename-form function.

also added a guard to prevent '/' in from_/to_name in rename calls.
2007-07-16 17:05:01 -07:00
Brian Warner
56dcb814a8 webish: test error cases more thoroughly by looking inside the response text 2007-07-16 12:01:19 -07:00
Brian Warner
3f294d5597 webish: oops, handle POST without localfile= too 2007-07-16 12:00:54 -07:00
Brian Warner
f207f4a199 webish.py: disallow slashes in POSTed filenames. Closes #75. 2007-07-16 11:53:12 -07:00
Brian Warner
7bc031a81d webish.Directory: add a 'text/plain' link for files, to download as plaintext.
This is useful to view (e.g.) .py files that would otherwise be served as
some weird text/x-python that browsers will just want to save to disk.
2007-07-13 23:45:35 -07:00
Brian Warner
6e1ad64c9d webish.py: test that _get_or_create_directories fix I made a few hours ago 2007-07-13 22:19:16 -07:00
Brian Warner
a290205ade webish: handle PUTs to direct children of the root 2007-07-13 19:31:52 -07:00
robk-org
d65d02fa58 add a 'rename' button to the webish dir view
alongside the 'del' button is now presented a 'rename' button, which takes
the user to a new page, the 't=rename-form' page, which asks ther user for
the new name of the child and ultimately submits a POST request to the dir
for 't=rename' to perform the actual rename i.e. an attach followed by a
delete of children.
2007-07-12 16:53:54 -07:00
robk-org
15c3055176 fix bug in arg handling around 'delete' button in directory view
the code composing the form providing the 'delete' button in a dir
view was broken in that it tried to put some of the arguments into 
the url query, rather than as the form's post args.  worse, nevow
was kind enough to escape the querystring making it invalid.
2007-07-12 16:46:54 -07:00
robk-org
cacc9ac7b1 include the filename on URI-link urls for files
this is likely to induce browsers to do more useful things with the result
than they would when given neither content-type nor filename.  (i.e. they
can guess that a .jpg file is an image, even with a bogus content type)
2007-07-11 15:26:47 -07:00
Brian Warner
798b714bef webish.DirnodeWalkerMixin: comment out the code that demonstrates what we
would do if we could just use generators, since we don't use it.
2007-07-12 23:28:09 -07:00
Brian Warner
ba7e14a870 fix several methods to handle LIT URIs correctly, rather than assuming that all filenodes are CHK URIs 2007-07-12 16:17:49 -07:00
Brian Warner
ea3c3e6780 import simplejson directly, and remove our local copies of the component .py files from util/json* 2007-07-10 15:49:32 -07:00
Brian Warner
13e84526a1 webapi: normalized API: use t=upload or t=download when providing localdir= or localfile= 2007-07-10 13:24:10 -07:00
Brian Warner
5264559561 webish: cosmetic: fix missing whitespace in HTML 2007-07-10 10:33:19 -07:00
Brian Warner
0395ad76eb web: indent the JSON to make it easier for humans to read, but slightly larger 2007-07-08 00:23:23 -07:00
Brian Warner
72fc8c5cb8 web: use real JSON instead of the fake stubs
Also include the encoder portion of Bob Ippolito's simplejson-1.7.1 as
allmydata.util.json_encoder . simplejson is distributed under a more liberal
license than Tahoe (looks to be modified BSD), so redistributing it should be ok.
2007-07-08 00:17:11 -07:00
Brian Warner
bd8625076a web: remove t=XML, and other dead code 2007-07-07 22:55:15 -07:00
Brian Warner
159f8bfd50 web: improve test coverage 2007-07-07 22:47:18 -07:00
Brian Warner
135f08a518 web: remove more dead code 2007-07-07 22:20:03 -07:00
Brian Warner
8952114442 webish.py: remove dead code 2007-07-07 22:12:46 -07:00