Commit Graph

453 Commits

Author SHA1 Message Date
Brian Warner
b6162681d5 webish: mark read-only directories as such when listing their parent 2007-06-26 12:37:00 -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
107207e09d webish: log dirname in mkdir 2007-06-15 02:48:19 -07:00
Brian Warner
a00bde050b webish: when mounting a shared directory, don't automatically move to it 2007-06-15 02:34:24 -07:00
Brian Warner
2066e8ddfc webish: add option to export/import shared directories (always read-write) 2007-06-15 02:31:23 -07:00
Brian Warner
53da82ec04 test_system.py: match change to /global_vdrive URL 2007-06-15 01:38:55 -07:00
Brian Warner
20dcda4ca7 create a personal (non-shared) vdrive, in addition to the global shared one 2007-06-15 01:33:24 -07:00
Brian Warner
51809ce341 webish: enable deletion of directories 2007-06-15 01:32:57 -07:00
Brian Warner
1eba30cd14 webish.py: put the URI in a narrower auto-scrolling box (with CSS) 2007-06-15 01:32:20 -07:00
Brian Warner
1cb1faf11d runner.py: add 'dump-directory-node' command 2007-06-15 00:47:05 -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
a182edf4de upload.py: minor refactoring 2007-06-11 19:21:51 -07:00
Brian Warner
e0dfedb0a6 add 'allmydata-tahoe dump-uri-extension' utility command 2007-06-11 18:38:21 -07:00
Brian Warner
382888899b refactor URI_extension handlers out of encode/download and into uri.py 2007-06-11 18:25:18 -07:00
Brian Warner
48a8c32ed7 webish: display program/library versions on the welcome page 2007-06-11 10:51:11 -07:00
Brian Warner
363ed1264a webish: show vdrive and introducer connectedness separately
Also don't offer a link to the vdrive webpages if we don't have a vdrive.furl
2007-06-09 21:03:57 -07:00
Brian Warner
956d5ae256 rename fileid/verifierid to plaintext_hash/crypttext_hash 2007-06-09 20:46:04 -07:00
Brian Warner
584dc4ae94 handle uri_extension with a non-bencode serialization scheme 2007-06-08 16:17:54 -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
59f4a5abe8 client.py: use persistent FURLs for our Node, to reduce spurious connection attempts (#26) 2007-06-07 15:32:21 -07:00
Brian Warner
f3846da4ab encode.py: hush pyflakes warnings 2007-06-07 13:18:55 -07:00
Brian Warner
b2caf7fb9a encode/download: reduce memory footprint by deleting large intermediate buffers as soon as possible, improve hash tree usage 2007-06-07 13:15:58 -07:00
Brian Warner
c81f2b01ff encode.py: fix generation of plaintext/crypttext merkle trees 2007-06-07 13:14:14 -07:00
Brian Warner
a383c17444 hashtree.BadHashError: mention which leaf caused the problem 2007-06-07 12:38:22 -07:00
Brian Warner
2db17df833 iputil.get_local_ip_for: tolerate running on a disconnected host 2007-06-07 19:23:33 -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
fae4e8f9a3 download.py: refactor get-thingA-from-somebody to reuse the logic for other things 2007-06-06 23:50:02 -07:00
Brian Warner
dcf5abb51c encode.py: fix pyflakes warning 2007-06-07 02:56:16 -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
208a932d10 runner.py: allow --multiple to enable starting/stopping/creating multiple nodes at once 2007-06-06 14:06:57 -07:00
robk-org
0bcf29fba4 log a prominent warning message in the case that the introducer cannot be reached 2007-06-04 18:48:53 -07:00
robk-org
7c479ba8a7 catch failures in startService() and abort process 2007-06-04 18:46:37 -07:00
robk-org
92395125fa add a missing up-call in introducer.startService() 2007-06-04 18:45:40 -07:00
Brian Warner
f4c048bbeb encode.py: clean up handling of lost peers during upload, add some logging 2007-06-06 12:40:16 -07:00
Brian Warner
daa4c32381 runner.py: allow all directory-using commands (create/start/stop) to accept argv[-1] as well as --basedir 2007-06-06 11:37:19 -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
Brian Warner
d1d7cdd859 node.py: multi-class exception calls need parentheses 2007-05-31 18:32:21 -07:00
Brian Warner
7124f94461 download.py: refactor bucket_failed() a bit, add some docs 2007-05-31 18:31:36 -07:00
Brian Warner
edaed9c32c test_system.py: minor reformatting 2007-05-31 18:31:01 -07:00
Brian Warner
4f0e944087 node.py: add logging of startup/shutdown, for the cygwin test_system failure 2007-05-31 13:44:22 -07:00
Brian Warner
8875adf807 test_system.py: add a log message to help track down the occasional cygwin failure 2007-05-31 12:01:14 -07:00
Brian Warner
1160c1def2 node.py: log twisted version along with tahoe/foolscap/zfec versions 2007-05-31 11:21:06 -07:00
Brian Warner
ea78b4b605 check_memory: getting closer, now we have memusage numbers for uploads of 10kB and 10MB files 2007-05-29 17:39:39 -07:00
Zooko O'Whielacronx
04b649f971 switch from FieldStorage.value to FieldStorage.file
Unfortunately this doesn't make the O(n) memory usage go away.  It might reduce the constants -- I'm not sure.  I look forward to enhancement #54 -- memory usage tests!
2007-05-25 16:00:19 -07:00
Zooko O'Whielacronx
763cfc7874 amdlib.util: merge in changes to humanreadable.py that were made in pyutil 2007-05-25 15:49:57 -07:00
Brian Warner
c405c6117f check_memory.py: finish the failsafe-shutdown code 2007-05-24 17:34:42 -07:00
Brian Warner
4c7c5df41e runner.py: spoke too soon. Really fix #51 this time. 2007-05-24 11:20:39 -07:00
Brian Warner
d0db98cc40 runner.py: expanduser() basedirs, so '~' works. Closes #51. 2007-05-24 11:10:19 -07:00
Brian Warner
8fc1bf4330 test_node.py: hush pyflakes warnings 2007-05-23 17:55:04 -07:00
Brian Warner
cbca430062 node.py: hush pyflakes warnings 2007-05-23 17:54:48 -07:00
Brian Warner
2d21029367 test_introducer_and_vdrive: remove the assumption that startService returns a Deferred 2007-05-23 17:37:20 -07:00
Brian Warner
83daa265ba test_system.py: check size in web-ui display. closes #37 2007-05-23 17:25:49 -07:00
Zooko O'Whielacronx
80b09b6d54 add in-line doc that Josh wrote as he was trying to understand this code 2007-05-23 15:11:23 -07:00
Zooko O'Whielacronx
44902c5152 add unit test for "advertised_ip_addresses" feature and fix bug in that feature uncovered by this unit test 2007-05-23 15:08:55 -07:00
Zooko O'Whielacronx
77f55f368a make stopService() defer until startService() completes (fixes a problem with the new not-yet-committed unit test) 2007-05-23 15:08:03 -07:00
Brian Warner
f9e45391f6 node.py: use 'node.pem' for all nodes
Rather than use separate client.pem and introducer.pem files, use 'node.pem'
for all nodes regardless of what type it is. This is slightly cleaner, but
introduces a compatibility. Users who upgrade to this change should do
'mv client.pem node.pem' to avoid generating a new certificate and thus
changing their TubID.
2007-05-23 12:48:52 -07:00
Brian Warner
9edc6574ae node.py: use Tub's certFile= argument instead of doing it ourselves 2007-05-23 12:41:23 -07:00
Zooko O'Whielacronx
3872e94da2 rename all "*PBURL*" to "*FURL*"
This breaks backwards compatibility with Tahoe v0.2 -- the first public release of Tahoe.
2007-05-22 14:08:30 -07:00
Zooko O'Whielacronx
9cd1757799 refactor iputil and make it return addresses in descending order of goodness instead of in a set
Actually of course iputil can't tell exactly how good they are, and a wise user
of iputil will try all of them.  But you can't try all of them simultaneously,
so you might as well try the best ones first.
2007-05-22 14:06:37 -07:00
Zooko O'Whielacronx
921e643b93 don't check for existence of portnum file and then try to open it -- instead try to open it and catch exception
This avoids a race condition, also known as time-of-check-to-time-of-use.
2007-05-22 14:06:00 -07:00
Zooko O'Whielacronx
98066ccaee don't test for existence of certfile and then try to open it -- instead try to open it and catch exception
This avoids a race condition, also known as time-of-check-to-time-of-use.
2007-05-22 14:04:16 -07:00
Zooko O'Whielacronx
a2970cf7c1 fix handling of local_ip file and rename it to advertised_ip_addresses and document it in README 2007-05-22 14:01:40 -07:00
Zooko O'Whielacronx
10df6fac02 raise constraint on FURLs from 150 chars to 1000 chars 2007-05-22 13:59:17 -07:00
Brian Warner
05163ec8e1 change uri-packer-unpacker to deal with dictionaries, not fragile tuples 2007-05-23 11:18:49 -07:00
Zooko O'Whielacronx
3d1adf6d30 update docs, remove extraneous licence text, sort module names in import statement
closes #46 ?
2007-05-21 13:42:51 -07:00
Zooko O'Whielacronx
9b70d17d4b enable private upload, in which the file is inserted at the grid layer but not at the vdrive layer
This patch is actually by Faried Nawaz, as per ticket #33:

http://allmydata.org/trac/tahoe/ticket/33
2007-05-16 08:40:19 -07:00
Brian Warner
82ba0f8540 UNDO: forget about old peers (closes #26)
Add a new method to RIIntroducer, to allow the central introducer node to
remove peers from the active set after they've gone away. Without this,
client nodes accumulate stale peer FURLs forever. This introduces a
compatibility break, as old introducers won't know about the 'lost_peers'
message, although the errors produced are probably harmless.
2007-05-07 19:10:24 -07:00
Brian Warner
04af4a48b5 forget about old peers (closes #26)
Add a new method to RIIntroducer, to allow the central introducer node to
remove peers from the active set after they've gone away. Without this,
client nodes accumulate stale peer FURLs forever. This introduces a
compatibility break, as old introducers won't know about the 'lost_peers'
message, although the errors produced are probably harmless.
2007-05-07 19:10:24 -07:00
Zooko O'Whielacronx
e0bedb64ea manually merge recent changes to pyutil's copy of "version.py" with allmydata's copy of "version.py" 2007-05-09 16:04:05 -07:00
Faried Nawaz
2016b846b9 display file size in directory.xhtml 2007-05-04 13:07:32 -07:00
Brian Warner
5b3a1cdc56 test_introducer.py: turn off the defer.setDebugging(True) call that was left over from a troubleshooting session: it slows down the test suite by a factor of 2 2007-05-04 00:45:23 -07:00
Brian Warner
9bd213abe7 version.py: handle both '0.2.0' and '0.2.0-1', remove 'tags' for now 2007-05-03 20:31:27 -07:00
Brian Warner
3f6b660272 update version-number handling, pull release tags from darcs history 2007-05-03 20:14:07 -07:00
Zooko O'Whielacronx
5610a1b2ce tahoe v0.2.0-0-UNSTABLE 2007-05-02 16:23:23 -07:00
Zooko O'Whielacronx
ff08abb67e bump test timeout even higher
It does indeed take longer than 2400 seconds to run test_upload_and_download on a virtual windows machine when the underlying real machine is heavily loaded down with filesystem analysis runs...
2007-05-02 15:31:05 -07:00
Brian Warner
0650e5543f figleaf_htmlizer: when all counts are zero, claim 0% instead of 100%, since it probably means that coverage checking has failed completely 2007-05-01 11:07:28 -07:00
Zooko O'Whielacronx
75e0284471 v0.2.0b2-0-UNSTABLE 2007-05-01 15:46:19 -07:00
Zooko O'Whielacronx
40e1c4be71 grand unified version numbers
Now the allmydata python package, the setup.py script, and the debian packages all get their tahoe version number from the same place.
2007-05-01 13:23:15 -07:00
Zooko O'Whielacronx
e697c84df1 bump timeout up because it timed out even on my super fast MacBook Pro
Hm.  This probably means that it is never going to finish...
2007-04-30 23:16:06 -07:00
Zooko O'Whielacronx
f724719744 v0.2.0b1-0-UNSTABLE 2007-04-30 23:11:23 -07:00
Zooko O'Whielacronx
137a427a47 bump some unit tests up to very high timeouts because my poor G4 867 MHz PowerBook, which is busy doing video iChat, takes a long time to run these tests 2007-04-30 21:03:43 -07:00
Brian Warner
461d64e371 test_system: increase timeouts to almost 20 minutes: we have buildslaves that take more than 5 minutes to finish these tests. 2007-04-30 20:14:58 -07:00
Zooko O'Whielacronx
e0a18d12af globally search and replace "mesh" with "grid" and adjust description of the effect of NAT on the topology 2007-04-30 13:06:09 -07:00
Zooko O'Whielacronx
b027ee1489 v0.1.4b2-0-UNSTABLE 2007-04-30 10:00:07 -07:00
Zooko O'Whielacronx
d19d1058e0 extirpate all references the "queen" and "metatracker"
This is a potentially disruptive and potentially ugly change to the code base,
because I renamed the object that serves in both roles from "Queen" to
"IntroducerAndVdrive", which is a bit of an ugly name.

However, I think that clarity is important enough in this release to make this
change.  All unit tests pass.  I'm now darcs recording this patch in order to
pull it to other machines for more testing.
2007-04-30 09:57:52 -07:00
Zooko O'Whielacronx
7090ed66c5 v0.1.3-0-UNSTABLE 2007-04-30 06:02:43 -07:00
Zooko O'Whielacronx
a61178f425 raise the limit on the number of hashes when retrieving them, too 2007-04-30 06:00:10 -07:00
Zooko O'Whielacronx
8e4aa3e1fb raise the limit on block hashes and share hashes from 30 to 2**20 2007-04-29 23:51:15 -07:00
Zooko O'Whielacronx
2fd7b81fba v0.1.2-0-UNSTABLE 2007-04-29 23:00:08 -07:00
Zooko O'Whielacronx
85b1a4374b allmydata-tahoe v0.1.1-1-UNSTABLE 2007-04-27 16:07:22 -07:00
Brian Warner
82b3554c2f testutil.py: remove unused import, appease pyflakes 2007-04-27 08:11:34 -07:00
Zooko O'Whielacronx
a70a599249 make it print out version numbers when it constructs a Node instance 2007-04-27 13:47:38 -07:00
Zooko O'Whielacronx
7b0db1c91f make runner find twistd and invoke it with python
This makes allmydata-tahoe work on Windows, and probably doesn't make it fail on other platforms.
2007-04-26 23:14:13 -07:00
Zooko O'Whielacronx
5121a8d4a2 make testutil more flexible about what platform it runs on 2007-04-26 22:16:48 -07:00
Brian Warner
db2caf58d4 interfaces: allow URIs to be up to 300 chars long, we're just crossing over the edge now 2007-04-26 18:08:29 -07:00
Brian Warner
5ceeaaea6a add RIClient.get_versions, in the hopes of enabling backwards-compatibility code in the future 2007-04-26 12:01:25 -07:00
Zooko O'Whielacronx
0df42ed71f tahoe v0.1.1-0-UNSTABLE 2007-04-26 11:25:15 -07:00
Brian Warner
4b2298937b use real encryption, generate/store/verify verifierid and fileid 2007-04-25 17:53:10 -07:00
Brian Warner
f4beff38c4 sort coverage tables by lines uncovered, rather than percentages 2007-04-24 11:49:26 -07:00
Brian Warner
9251b6e85e test_system: improve webish.py coverage 2007-04-24 01:41:54 -07:00
Brian Warner
73bb4f80af vdrive.py: let put_file return the URI that was used for the file itself 2007-04-24 01:41:40 -07:00
Brian Warner
813fdd70da test_runner.py: improve test coverage a little bit 2007-04-23 21:28:19 -07:00
Brian Warner
e7a41aa9f7 testutil.py: hush a pyflakes warning 2007-04-23 21:21:50 -07:00
Brian Warner
d1a848e0a7 runner.py: add --quiet, use it from test cases 2007-04-23 21:17:13 -07:00
Brian Warner
8307aaccb6 testutil: make SignalMixin actually be a mixin (and not inherit from TestCase), use it from all tests that start notes and thus exec ifconfig 2007-04-23 21:15:02 -07:00
Brian Warner
78430d3124 test_upload.py: add some TODO items 2007-04-23 17:30:40 -07:00
Brian Warner
491f96258e test_runner.py: add some coverage for allmydata.scripts.runner, to create nodes 2007-04-19 18:56:45 -07:00
Brian Warner
be8eeadb7a rename queen control files to 'introducer' 2007-04-19 18:24:15 -07:00
Brian Warner
a3c9ead74f replace 'queen' with 'introducer' in a lot of places, but not all 2007-04-19 17:30:21 -07:00
Brian Warner
76e0ec3214 figleaf: add number-of-uncovered-lines to the HTML output 2007-04-19 11:09:33 -07:00
Zooko O'Whielacronx
20451e43b5 assign version number tahoe 0.1.0-0-UNSTABLE 2007-04-19 13:47:59 -07:00
Zooko O'Whielacronx
be8744caf8 copy version.py from pyutil 2007-04-19 13:47:36 -07:00
Brian Warner
49e992b8b6 make test_encode less CPU-intense by using 4-out-of-10 encoding instead of 25-out-of-100 2007-04-19 10:56:15 -07:00
Brian Warner
073333c791 iputil/testutil: fix pyflakes errors/warnings 2007-04-18 18:33:37 -07:00
Brian Warner
2d0e240466 encode: handle uploads of the same file multiple times. Unfortunately we have to do almost as much work the second time around, to compute the full URI 2007-04-18 18:29:10 -07:00
Brian Warner
d1c00bd527 test_system: turn off test_connections, since it is slow and subsumed by the other system tests 2007-04-18 16:06:57 -07:00
Brian Warner
bc8ff33cd1 interfaces.py: remove spurious 'pass' statements (which, incidentally, were counted as uncovered code) 2007-04-18 15:46:37 -07:00
Brian Warner
91d72bb504 test_storage: test StorageServer code too: allocation, lookup, multiple-writer behavior 2007-04-18 15:42:34 -07:00
Brian Warner
0a53fb00b2 storageserver.py: remove unused import 2007-04-18 10:43:33 -07:00
Zooko O'Whielacronx
a154641462 iputil.list_async_addresses now "works" on cygwin 2007-04-18 17:30:08 -07:00
Zooko O'Whielacronx
47bdfdf419 copy testutil from pyutil 2007-04-18 17:28:36 -07:00
Zooko O'Whielacronx
c5b9d2929d copy repeatable_random from pyutil 2007-04-18 17:27:33 -07:00
Zooko O'Whielacronx
55949faecc finish renaminf "fec" to "zfec" in tahoe 2007-04-18 17:25:16 -07:00
Brian Warner
85b36e348b encode.py: remove unused pad() code 2007-04-17 21:22:32 -07:00
Brian Warner
80cf789817 download: remove unused import 2007-04-17 21:11:20 -07:00
Brian Warner
b76aa1ce17 download: oops, NotEnoughHashesError comes from hashtree, not hashutil 2007-04-17 20:37:51 -07:00
Brian Warner
b84d6ed07f encode: fix multi-segment uploads: lambdas inside for loops require special attention to make sure you are capturing the *value* of the loop variable and not just the slot it lives in 2007-04-17 20:29:08 -07:00
Brian Warner
a4d7607a9e test_system: minor comment 2007-04-17 20:28:19 -07:00
Brian Warner
e7ec4ff4e5 factor out the tagged hash function used for subshares/blocks 2007-04-17 20:27:56 -07:00
Brian Warner
76e28b3484 comment out some verbose log messages, add commented-out new ones 2007-04-17 20:25:52 -07:00
Brian Warner
008e418523 storageserver: assert that blocks are written in-order, clean up tests a bit 2007-04-17 20:21:05 -07:00
Zooko O'Whielacronx
c2dfcb1f01 don't clobber existing storefile every put block 2007-04-17 20:14:44 -07:00
Zooko O'Whielacronx
723f4078a3 pyutil: fileutil.open_or_create() 2007-04-17 20:14:26 -07:00
Brian Warner
e040b85f5d test_storage: add (failing) test of the BucketWriter/BucketReader implementation 2007-04-17 20:03:44 -07:00
Brian Warner
dbbbc96cbf storageserver: the last segment is not always going to be the same size as the rest, so don't assert such a thing 2007-04-17 13:41:45 -07:00