Commit Graph

60 Commits

Author SHA1 Message Date
Zooko O'Whielacronx
8b1cd154da wui: fix bug in which empty directory is marked as "unreadable", add test, remove exclamation point 2009-04-07 11:28:34 -07:00
Brian Warner
6599eae6f9 WUI: fix display of empty directories, it threw an exception before 2009-03-20 16:58:09 -07:00
Brian Warner
950200fece web: when a dirnode can't be read, emit a regular HTML page but with the child-table and upload-forms replaced with an apologetic message. Make sure to include the 'get info' links so the user can do a filecheck 2009-03-07 04:56:01 -07:00
Brian Warner
f42e3bb107 web: full patch for HTML-vs-plaintext traceback renderings, improve test coverage of exception rendering 2009-03-03 21:56:30 -07:00
Brian Warner
63b19e567c web: fix the ERROR: line to work the same in python2.4 and 2.5 2009-02-25 01:46:21 -07:00
Brian Warner
fd4ceb6a87 webapi: modify streaming deep-manifest/deep-checker to emit an ERROR: line if they encounter an unrecoverable+untraversable directory. For #590. 2009-02-24 23:13:35 -07:00
Brian Warner
c6c30ac5d4 webapi: pass client through constructor arguments, remove IClient, should make it easier to test web renderers in isolation 2009-02-20 12:15:54 -07:00
Brian Warner
bce4a5385b add --add-lease to 'tahoe check', 'tahoe deep-check', and webapi. 2009-02-17 19:32:43 -07:00
Brian Warner
476a5c8fac webapi #590: add streaming deep-check. Still need a CLI tool to use it. 2009-02-16 23:35:53 -07:00
Brian Warner
4e572a5f24 webapi: add verifycap (spelled 'verify_url') to the t=json output on files and directories. Closes #559. 2009-02-03 19:22:48 -07:00
Brian Warner
529a8e9fdb web/directory: add a link from readwrite directories to a read-only version, and fix the 'SI=xxx' header to actually use the storage index, not the writekey 2009-01-30 19:32:05 -07:00
Brian Warner
9d6534d78b make streaming-manifest stop doing work after the HTTP connection is dropped 2009-01-23 19:39:08 -07:00
Brian Warner
26260374e9 #590: add webish t=stream-manifest 2009-01-22 22:01:36 -07:00
Zooko O'Whielacronx
ef60e85ec6 naming: finish renaming "CheckerResults" to "CheckResults" 2009-01-09 18:00:52 -07:00
Brian Warner
7ee336b274 webapi/deep-manifest t=JSON: don't return the (large) manifest/SI/verifycap lists unless the operation has completed, to avoid the considerable CPU+memory cost of creating the JSON (for 330k dirnodes, it could take two minutes to generate 275MB of JSON). They must be paid eventually, but not on every poll 2009-01-08 19:59:32 -07:00
Zooko O'Whielacronx
5e6f90a015 rename "checker results" to "check results", because it is more parallel to "check-and-repair results" 2009-01-06 13:37:03 -07:00
Brian Warner
735b3493f1 web/directory.py: really really fix #553. Unfortunately it's tricky to simulate the behavior of a brower's relative-url handling in a unit test. 2008-12-05 23:14:12 -07:00
Zooko O'Whielacronx
21d88a0cba web: fix more info links again
Really, *really* closes #553.
2008-12-05 15:39:39 -07:00
Zooko O'Whielacronx
dd834cf7e9 web: fix moreinfo link 2008-12-05 15:29:39 -07:00
Zooko O'Whielacronx
93cd0f58a9 web: "More Info" link describes the same file that the "file" link points to, rather than to the file under the same name in this directory
It's a subtle but real difference.
Fixes #553 -- "More Info" link should point to a file/dir, not a dir+childname .
2008-12-05 15:05:02 -07:00
Zooko O'Whielacronx
b315619d6b download: refactor handling of URI Extension Block and crypttext hash tree, simplify things
Refactor into a class the logic of asking each server in turn until one of them gives an answer 
that validates.  It is called ValidatedThingObtainer.

Refactor the downloading and verification of the URI Extension Block into a class named 
ValidatedExtendedURIProxy.

The new logic of validating UEBs is minimalist: it doesn't require the UEB to contain any 
unncessary information, but of course it still accepts such information for backwards 
compatibility (so that this new download code is able to download files uploaded with old, and 
for that matter with current, upload code).

The new logic of validating UEBs follows the practice of doing all validation up front.  This 
practice advises one to isolate the validation of incoming data into one place, so that all of 
the rest of the code can assume only valid data.

If any redundant information is present in the UEB+URI, the new code cross-checks and asserts 
that it is all fully consistent.  This closes some issues where the uploader could have 
uploaded inconsistent redundant data, which would probably have caused the old downloader to 
simply reject that download after getting a Python exception, but perhaps could have caused 
greater harm to the old downloader.

I removed the notion of selecting an erasure codec from codec.py based on the string that was 
passed in the UEB.  Currently "crs" is the only such string that works, so 
"_assert(codec_name == 'crs')" is simpler and more explicit.  This is also in keeping with the 
"validate up front" strategy -- now if someone sets a different string than "crs" in their UEB, 
the downloader will reject the download in the "validate this UEB" function instead of in a 
separate "select the codec instance" function.

I removed the code to check plaintext hashes and plaintext Merkle Trees.  Uploaders do not 
produce this information any more (since it potentially exposes confidential information about 
the file), and the unit tests for it were disabled.  The downloader before this patch would 
check that plaintext hash or plaintext merkle tree if they were present, but not complain if 
they were absent.  The new downloader in this patch complains if they are present and doesn't 
check them.  (We might in the future re-introduce such hashes over the plaintext, but encrypt 
the hashes which are stored in the UEB to preserve confidentiality.  This would be a double-
check on the correctness of our own source code -- the current Merkle Tree over the ciphertext 
is already sufficient to guarantee the integrity of the download unless there is a bug in our 
Merkle Tree or AES implementation.) 

This patch increases the lines-of-code count by 8 (from 17,770 to 17,778), and reduces the 
uncovered-by-tests lines-of-code count by 24 (from 1408 to 1384).  Those numbers would be more 
meaningful if we omitted src/allmydata/util/ from the test-coverage statistics.
2008-12-05 08:17:54 -07:00
Brian Warner
bc53c24003 dirnode manifest: add verifycaps, both to internal API and to webapi. This will give the manual-GC tools more to work with, so they can estimate how much space will be freed. 2008-11-24 14:40:46 -07:00
Brian Warner
b84c2c6541 manifest: add storage-index strings to the json results 2008-11-19 16:00:27 -07:00
Brian Warner
815e0673e6 manifest: include stats in results. webapi is unchanged. 2008-11-19 15:03:47 -07:00
Brian Warner
a5aebf0cbd web: test (and fix) PUT DIRURL t=uri, which replaces a directory in-place with some other cap 2008-10-28 21:54:46 -07:00
Brian Warner
e1d9169ba3 web/directory.py: slight shuffle to improve test coverage 2008-10-28 21:54:06 -07:00
Brian Warner
fca158e83a dirnode lookup: use distinct NoSuchChildError instead of the generic KeyError when a child can't be found 2008-10-27 13:15:25 -07:00
Brian Warner
a1cfac89f9 webapi: fix t=rename from==to, it used to delete the file 2008-10-23 16:32:36 -07:00
Brian Warner
977c6ac510 more #514: pass a Monitor to all checker operations, make mutable-checker honor the cancel flag 2008-10-22 01:38:18 -07:00
Brian Warner
34ab4e3de3 more #514 log-webop status/cancel: add handle-expiration, test coverage 2008-10-21 22:13:54 -07:00
Brian Warner
0f7c1fd6fd #514: improve test coverage 2008-10-21 17:52:56 -07:00
Brian Warner
ad3d9207a9 Change deep-size/stats/check/manifest to a start+poll model instead of a single long-running synchronous operation. No cancel or handle-expiration yet. #514. 2008-10-21 17:03:07 -07:00
Brian Warner
cd236efc68 web/directory: t=manifest output=html: make the caps into clickable hrefs 2008-10-07 13:18:45 -07:00
Brian Warner
f7edbc1536 web/directory: factor out the get_root function 2008-10-07 13:17:42 -07:00
Brian Warner
53c9867c5c web/directory.py: remove unused imports 2008-10-07 12:48:20 -07:00
Brian Warner
3ffaded809 web: change t=manifest to return a list of (path,read/writecap) tuples, instead of a list of verifycaps. Add output=html,text,json. 2008-10-06 21:36:18 -07:00
Brian Warner
8e6d122ecf web: rewrite t=deep-size in terms of deep-stats, update test to match inclusion of directory sizes 2008-10-06 21:35:39 -07:00
Brian Warner
935d185696 tolerate simplejson-2.0.0 and newer, which frequently return bytestrings instead of unicode objects. Closes #523 2008-09-30 15:21:06 -07:00
Brian Warner
54fce5c066 webapi: survive slashes in filenames better: make t=info and t=delete to work, and let t=rename fix the problem 2008-09-24 13:35:05 -07:00
Brian Warner
99d5a8d8b9 web: add 'more info' pages for files and directories, move URI/checker-buttons/deep-size/etc off to them 2008-09-17 22:00:41 -07:00
Brian Warner
51612cd1be webish: add an extra newline to JSON output 2008-09-15 13:43:14 -07:00
Brian Warner
ca273eeaf1 web: fix output=JSON, add buttons for repair/json to the 'run deep-check' form 2008-09-10 14:11:37 -07:00
Brian Warner
1d2d6a35a6 checker results: add output=JSON to webapi, add tests, clean up APIs
to make the internal ones use binary strings (nodeid, storage index) and
the web/JSON ones use base32-encoded strings. The immutable verifier is
still incomplete (it returns imaginary healty results).
2008-09-09 19:45:17 -07:00
Brian Warner
3408d552cd checker: overhaul checker results, split check/check_and_repair into separate methods, improve web displays 2008-09-07 12:44:56 -07:00
Brian Warner
014c9b5969 CLI: add 'tahoe debug corrupt-share', and use it for deep-verify tests, and fix non-deep web checker API to pass verify=true into node 2008-08-12 17:05:01 -07:00
Brian Warner
08e229f29a web/directory: enable verify=true in t=deep-check 2008-08-11 21:24:09 -07:00
Brian Warner
67db0a4967 deep-check: add webapi, add 'DEEP-CHECK' button to wui, add tests, rearrange checker API a bit 2008-07-17 16:47:09 -07:00
Brian Warner
3e9322bcb6 checker: re-enable checker web results (although they just say 'Healthy' right now) 2008-07-16 15:42:56 -07:00
Brian Warner
94e619c1f6 overhaul checker invocation
Removed the Checker service, removed checker results storage (both in-memory
and the tiny stub of sqlite-based storage). Added ICheckable, all
check/verify is now done by calling the check() method on filenodes and
dirnodes (immutable files, literal files, mutable files, and directory
instances).

Checker results are returned in a Results instance, with an html() method for
display. Checker results have been temporarily removed from the wui directory
listing until we make some other fixes.

Also fixed client.create_node_from_uri() to create LiteralFileNodes properly,
since they have different checking behavior. Previously we were creating full
FileNodes with LIT uris inside, which were downloadable but not checkable.
2008-07-15 17:23:25 -07:00
Brian Warner
5bdff74e5b web: stop using absolute links (or url.here) in forms and pages, since they break behind proxies. Partially addresses #461 2008-06-17 19:49:40 -07:00