Commit Graph

191 Commits

Author SHA1 Message Date
Brian Warner
617a85df67 web: remove debug prints 2007-07-07 20:11:30 -07:00
Brian Warner
464f25e5f2 web: more test work, now all tests pass, POST too, only XMLRPC left to implement 2007-07-07 20:06:58 -07:00
Brian Warner
f35c9c6540 test_system.py: change/remove the tests that currently fail due to web changes 2007-07-07 20:06:44 -07:00
Brian Warner
0cd730a7b3 web: more test work, now all tests either pass or are skipped (POST, XMLRPC, and URI/) 2007-07-07 10:34:05 -07:00
Brian Warner
d501984eba webapi: checkpointing more test progress 2007-07-07 00:16:36 -07:00
Brian Warner
6570253d6b checkpointing new webapi: not all tests pass yet 2007-07-06 19:43:55 -07:00
Brian Warner
21e12f383d web: missed a IndexError-to-KeyError conversion 2007-07-06 19:43:03 -07:00
Brian Warner
71c04fc2e7 web: use KeyError (rather than IndexError) to signal a missing child 2007-07-06 19:40:08 -07:00
Brian Warner
9e42dda6a4 add IDirectoryNode.get_child_at_path 2007-07-06 19:38:37 -07:00
Brian Warner
a1c97aa0be storageserver: include metadata in the sizelimit, at least after the bucket has been closed 2007-07-03 17:38:49 -07:00
Brian Warner
94e6e6160b activate storage size limits in the client. Closes #34.
To use this, write a number like 10MB or 5Gb or 5000000000 to a file
named 'sizelimit' in the client's base directory. The node will not grant
leases for shares that would take it much beyond this many bytes of
storage. Note that metadata is not included in the allocation count until
a restart, so the actual space consumed may grow beyond the limit if
the node is not restarted very frequently and the amount of metadata is
significant.
2007-07-03 17:27:07 -07:00
Brian Warner
c80ea7d693 storageserver: implement size limits. No code to enable them yet, though 2007-07-03 17:08:02 -07:00
Brian Warner
9ddb929651 fileutil: add du() function 2007-07-03 15:49:45 -07:00
Brian Warner
622acc690a webish: improve reporting of web download errors that occur early enough
If the error occurs before any data has been sent, we can give a sensible
error message (code 500, stack trace, etc). This will cover most of the error
cases. The ones that aren't covered are when we run out of good peers after
successfully decoding the first segment, either because they go away or
because their shares are corrupt.
2007-07-03 13:47:37 -07:00
Brian Warner
f15bb302a1 webish.py: handle errors during download better. Addresses #65.
Previously, exceptions during a web download caused a hang rather than some
kind of exception or error message. This patch improves the situation by
terminating the HTTP download rather than letting it hang forever. The
behavior still isn't ideal, however, because the error can occur too late to
abort the HTTP request cleanly (i.e. with an error code). In fact, the
Content-Type header and response code have already been set by the time any
download errors have been detected, so the browser is committed to displaying
an image or whatever (thus any error message we put into the stream is
unlikely to be displayed in a meaningful way).
2007-07-03 13:18:14 -07:00
Brian Warner
7e32d3c8af test_util: improve test coverage of allmydata.util.fileutil 2007-07-03 11:15:05 -07:00
Brian Warner
9d47c2524e test_system: stall for a second while bouncing the client, it might help windows 2007-06-28 19:20:28 -07:00
Brian Warner
efb99078b6 change IVirtualDrive.get_node_at_path to accept either a list or a single slash-separated string 2007-06-28 17:46:14 -07:00
Brian Warner
5854916299 test_system.py: more vdrive coverage 2007-06-28 15:05:33 -07:00
Brian Warner
d6e732b65f vdrive: add get_node_at_path(pathlist) 2007-06-28 11:00:03 -07:00
Brian Warner
b06c74c2a1 Add the 'vdrive' service, for clients to access the public/private root dirs.
These allow client-side code to conveniently retrieve the IDirectoryNode
instances for both the global shared public root directory, and the per-user
private root directory.
2007-06-27 17:11:06 -07:00
Brian Warner
18ab5ce837 dirnode: add build_manifest() and introduce 'refresh capabilities' 2007-06-26 19:41:20 -07:00
Brian Warner
b11fa20191 merge vdrive.py and filetable.py into a single dirnode.py 2007-06-26 17:16:58 -07:00
Brian Warner
78c2376fa3 more runner.py test coverage: don't bypass argv parsing 2007-06-26 16:51:38 -07:00
Brian Warner
912fc5a77e runner.py: improve test coverage further: implement --quiet with StringIOs 2007-06-26 16:19:18 -07:00
Brian Warner
de24d3cd94 dump_uri_extension: improve test coverage of runner.py 2007-06-26 15:55:00 -07:00
Brian Warner
a505560bbe improve test coverage of runner.py 2007-06-26 15:36:46 -07:00
Brian Warner
bc2603c818 vdrive: protect dirnode contents with an HMAC 2007-06-26 12:36:21 -07:00
Brian Warner
4a0682874b remove old filetree code 2007-06-25 20:34:19 -07:00
Brian Warner
fb02488a8e vdrive: switch to URI:DIR and URI:DIR-RO, providing transitive readonlyness 2007-06-25 13:23:51 -07:00
Brian Warner
53da82ec04 test_system.py: match change to /global_vdrive URL 2007-06-15 01:38:55 -07:00
Brian Warner
82c38d370a make new vdrive work, implement convenience wrapper, passes all tests 2007-06-15 00:37:32 -07:00
Brian Warner
5e5347a1bc test_filetable: fix to match new vdrive approach 2007-06-15 00:01:01 -07:00
Brian Warner
ec77a227be revamp vdrive: nodes with furls. tests still fail. 2007-06-14 20:14:34 -07:00
Brian Warner
106177a7f2 filetable: switch to new approach with anonymous nodes 2007-06-14 17:24:56 -07:00
Brian Warner
956d5ae256 rename fileid/verifierid to plaintext_hash/crypttext_hash 2007-06-09 20:46:04 -07:00
Brian Warner
c9ef291c02 rename thingA to 'uri extension' 2007-06-08 15:59:16 -07:00
Brian Warner
72bc8627de consolidate multiple definitions of NotEnoughPeersError 2007-06-07 22:20:55 -07:00
Brian Warner
f62a544b93 remove several leftover defintions of netstring() 2007-06-07 22:13:18 -07:00
Brian Warner
6df5c856ac test_client.py: improve test coverage a bit 2007-06-07 22:09:02 -07:00
Brian Warner
c049941529 move almost all hashing to SHA256, consolidate into hashutil.py
The only SHA-1 hash that remains is used in the permutation of nodeids,
where we need to decide if we care about performance or long-term security.
I suspect that we could use a much weaker hash (and faster) hash for
this purpose. In the long run, we'll be doing thousands of such hashes
for each file uploaded or downloaded (one per known peer).
2007-06-07 21:47:21 -07:00
Brian Warner
cabba59fe7 test_encode.py: even more testing of merkle trees, getting fairly comprehensive now 2007-06-07 21:24:39 -07:00
Brian Warner
053109b28b add tests for bad/inconsistent plaintext/crypttext merkle tree hashes 2007-06-07 19:32:29 -07:00
Brian Warner
4f001bedb3 test_encode.py: further refactoring of send_and_recover 2007-06-07 18:36:25 -07:00
Brian Warner
c7160af7ee test_encode.py: refactor send_and_recover a bit 2007-06-07 18:24:26 -07:00
Brian Warner
8907e04ef5 client.py: allow operation without vdrive.furl, for storage-only no-UI nodes 2007-06-07 17:55:49 -07:00
Brian Warner
e04ff3adac fetch plaintext/crypttext merkle trees during download, but don't check the segments against them yet 2007-06-07 00:15:41 -07:00
Brian Warner
5cbdc240e2 encode: add plaintext/crypttext merkle trees to the shares, and the thingA block. Still needs tests and download-side verification. 2007-06-06 19:40:20 -07:00
Brian Warner
6bb9debc16 encode: tolerate lost peers, as long as we still get enough shares out. Closes #17. 2007-06-06 10:32:40 -07:00
Brian Warner
3dfd26970b move validation data to thingA, URI has storage_index plus thingA hash
This (compatibility-breaking) change moves much of the validation data and
encoding parameters out of the URI and into the so-called "thingA" block
(which will get a better name as soon as we find one we're comfortable with).
The URI retains the "storage_index" (a generalized term for the role that
we're currently using the verifierid for, the unique index for each file
that gets used by storage servers to decide which shares to return), the
decryption key, the needed_shares/total_shares counts (since they affect
peer selection), and the hash of the thingA block.

This shortens the URI and lets us add more kinds of validation data without
growing the URI (like plaintext merkle trees, to enable strong incremental
plaintext validation), at the cost of maybe 150 bytes of alacrity. Each
storage server holds an identical copy of the thingA block.

This is an incompatible change: new messages have been added to the storage
server interface, and the URI format has changed drastically.
2007-06-01 18:48:01 -07:00