Commit Graph

779 Commits

Author SHA1 Message Date
Brian Warner
5f9894ca63 API updates, make most tests pass, disable others
* finally wire up "application versions"
* remove when_verifier (which used to fire after key establishment, but
  before the VERSION message was received or verified)
* fire when_verified and when_version at the same time (after VERSION is
  verified), but with different args
2017-04-06 12:22:44 -07:00
Brian Warner
e518f2b799 throw KeyFormatError when given a code with spaces 2017-04-06 12:22:44 -07:00
Brian Warner
aebee61816 fix close behavior: Deferreds should errback once closed 2017-04-06 12:22:44 -07:00
Brian Warner
ddb83e9d59 wormhole: handle w.close() after error-induced closure 2017-04-06 12:21:00 -07:00
Brian Warner
2422ee0b88 disable NotWelcome test until signal_error is done 2017-04-06 12:21:00 -07:00
Brian Warner
9ca657a7c6 reenable TorManager 2017-04-06 12:21:00 -07:00
Brian Warner
4234e79161 test_wormhole: fix message-doubling test 2017-04-06 12:21:00 -07:00
Brian Warner
105d9cc59f work on WelcomeHandler, still incomplete 2017-04-06 12:21:00 -07:00
Brian Warner
4c6cb1dddc xfer_util: update to new API 2017-04-06 12:21:00 -07:00
Brian Warner
dfe9fd2395 RC: internal errors during ws_open should halt boss 2017-04-06 12:21:00 -07:00
Brian Warner
6ada8252b7 Code: handle being connected before being told what to do 2017-04-06 12:21:00 -07:00
Brian Warner
8ee342ad82 make cmd_send/cmd_receive basically work again 2017-04-06 12:21:00 -07:00
Brian Warner
e9f3107127 deliver app-versions up to Wormhole 2017-04-06 12:21:00 -07:00
Brian Warner
60a61c995b implement w.derive_key() 2017-04-06 12:21:00 -07:00
Brian Warner
0474c39bab tests: match API change 2017-04-06 12:21:00 -07:00
Brian Warner
c499fce9f5 change API (wormhole.create), start on serialization 2017-04-06 12:21:00 -07:00
Brian Warner
b7b8df17be rename NameplateLister to Lister (unique prefix L) 2017-04-06 12:21:00 -07:00
Brian Warner
9a2d992815 reminder how ConnectionService should fail if first attempt fails 2017-04-06 12:21:00 -07:00
Brian Warner
88cb42f95b test_machines: exercise state machines better 2017-04-06 12:21:00 -07:00
Brian Warner
2dcfb07ba1 Receive does not need access to Key 2017-04-06 12:21:00 -07:00
Brian Warner
db7b24086f set no-cover on all state-definition lines, and set_trace 2017-04-06 12:21:00 -07:00
Brian Warner
610db612ba improve error handling
errors raised while processing a received message will cause the Wormhole to
close-with-error, and any pending Deferreds will be errbacked
2017-04-06 12:21:00 -07:00
Brian Warner
fb92922918 terminator: renaming TODO note 2017-04-06 12:21:00 -07:00
Brian Warner
4222054903 nameplate: tolerate rx_claimed during shutdown 2017-04-06 12:21:00 -07:00
Brian Warner
4793208d4e rewrite debug tracing, add to all machines 2017-04-06 12:21:00 -07:00
Brian Warner
b0c9c9bb4c fix basic test 2017-04-06 12:21:00 -07:00
Brian Warner
1beae97ec4 fix things back to the previous point of not working 2017-04-06 12:21:00 -07:00
Brian Warner
26adaabe18 implement new split nameplate/mailbox/terminator
fails even worse than before, of course
2017-04-06 12:21:00 -07:00
Brian Warner
c8be988801 add some state-machine tracing
needs warner/automat/36-tracing branch
2017-04-06 12:21:00 -07:00
Brian Warner
97d1ff859b logic bug: M.S4B.close() must not re-send RELEASE 2017-04-06 12:21:00 -07:00
Brian Warner
41b7bcfed5 working on fixes 2017-04-06 12:21:00 -07:00
Brian Warner
b7df5e21eb more tests, still failing 2017-04-06 12:21:00 -07:00
Brian Warner
8a2810ba70 test basic code allocation 2017-04-06 12:21:00 -07:00
Brian Warner
ef1904bc52 get null test working (open and immediate close) 2017-04-06 12:21:00 -07:00
Brian Warner
c95b6d402c Code: don't sent tx_allocate until we're connected
So Code needs connected/lost from the RendezvousConnector
2017-04-06 12:21:00 -07:00
Brian Warner
5d6989614b work on top-level stuff 2017-04-06 12:21:00 -07:00
Brian Warner
7e7b43e910 start on top-level driver, wormhole.py 2017-04-06 12:21:00 -07:00
Brian Warner
88775d7f50 states.py: remove old file 2017-04-06 12:21:00 -07:00
Brian Warner
825370fdd2 cleanups, remove misc.py 2017-04-06 12:21:00 -07:00
Brian Warner
d4bedeafbf general fixes 2017-04-06 12:21:00 -07:00
Brian Warner
20814a65f4 rename Wormhole (machine) to Boss, leave room for higher-level thing 2017-04-06 12:21:00 -07:00
Brian Warner
92f2b89d3e journal: fix syntax 2017-04-06 12:21:00 -07:00
Brian Warner
a2ed35ceb8 remove old files, lots of type work 2017-04-06 12:21:00 -07:00
Brian Warner
3101ca51db name cleanup 2017-04-06 12:21:00 -07:00
Brian Warner
80661392b6 build out all state machines
still early: automat is happy (they're syntactically valid), but the Outputs
are not implemented, and there are plenty of type mismatches
2017-04-06 12:21:00 -07:00
Brian Warner
9ae8091ec3 delete old files 2017-04-06 12:21:00 -07:00
Brian Warner
21cb62a4cf move _c2.py out of the way, I might want it later 2017-04-06 12:21:00 -07:00
Brian Warner
b179e66d08 start on machine implementation: _key.py and _send.py 2017-04-06 12:21:00 -07:00
Brian Warner
40e0d6b663 more work, feels better now 2017-04-06 12:21:00 -07:00
Brian Warner
16c477424c more demo work 2017-04-06 12:21:00 -07:00
Brian Warner
693e215d8b sketching out a journal-based demo app 2017-04-06 12:21:00 -07:00
Brian Warner
20b80be342 remove stale machines 2017-04-06 12:21:00 -07:00
Brian Warner
3af375b173 finish Mailbox state machine, including close 2017-04-06 12:21:00 -07:00
Brian Warner
b934192f20 work on Mailbox machine 2017-04-06 12:21:00 -07:00
Brian Warner
11a80f0018 moving to separate machine class 2017-04-06 12:21:00 -07:00
Brian Warner
3bf762b4f7 try coding top-level WormholeMachine 2017-04-06 12:21:00 -07:00
Brian Warner
faab1e87d0 split _machine.py out 2017-04-06 12:21:00 -07:00
Brian Warner
17a90d87ac tweaks 2017-04-06 12:21:00 -07:00
Brian Warner
35324a7911 my StateMachine can now render .dot 2017-04-06 12:21:00 -07:00
Brian Warner
0fe6cfd994 tweaks 2017-04-06 12:21:00 -07:00
Brian Warner
0b05c9ca5a new experimental state-machine language
I think I want to express actions as transient states. _c2.py matches w4.dot
2017-04-06 12:21:00 -07:00
Brian Warner
057f616765 more experimentation 2017-04-06 12:21:00 -07:00
Brian Warner
18f7ab9308 more state-machine work 2017-04-06 12:21:00 -07:00
Brian Warner
63ae3c63fc notes 2017-04-06 12:21:00 -07:00
Brian Warner
9e5bf452e3 rename 2017-04-06 12:21:00 -07:00
Brian Warner
3c9c0e58ab move to _connection.py, add more state machines
Starting on defining manager state machines for nameplates, mailboxes, the
PAKE key-establishment process, and the bit that knows it can drop the
connection when both nameplates and mailboxes have been released.
2017-04-06 12:21:00 -07:00
Brian Warner
14c8e76364 onConnect, start manual tests, doesn't work yet 2017-04-06 12:21:00 -07:00
Brian Warner
b826e8c73c hack args till they work, add ALLOW_CLOSE
the diagram is a lot simpler if the only way to shut things down is to
terminate the whole process
2017-04-06 12:21:00 -07:00
Brian Warner
d136028fa8 try adding args 2017-04-06 12:21:00 -07:00
Brian Warner
73f3d86107 state machine should be complete, I think 2017-04-06 12:21:00 -07:00
Brian Warner
94b1ed8739 starting to draw new state machines 2017-04-06 12:21:00 -07:00
Brian Warner
65db4729cd rendezvous_websocket.py: add idempotency docs 2017-03-03 05:55:39 -08:00
Brian Warner
8d5770d8cc tor_manager: allow port to be a 'long' 2017-03-03 05:49:36 -08:00
Brian Warner
b7ff5f05d5 transit: allow port to be a 'long' 2017-03-03 05:49:30 -08:00
Brian Warner
cf9053637c test_util: free-space can be a 'long' 2017-03-03 05:49:25 -08:00
Brian Warner
71f34e4f5b test/run_trial.py: protect run() with __name__
Without this, any import (e.g. when running "automat-visualize") caused the
tests to be run as a side-effect.
2017-02-22 18:03:33 -08:00
Brian Warner
6889ba088c remove server/runner.py, no longer used 2017-02-22 17:52:14 -08:00
Shannon Mulloy
ffefb5ebdc improve coverage with input mock 2017-02-05 15:42:49 -08:00
Shannon Mulloy
33526b2180 rx: _remove_existing after accept 2017-02-05 13:29:20 -08:00
Shannon Mulloy
56a0a1f584 rx: allow overwrite with --output-file= #73 2017-02-04 19:27:09 -08:00
Brian Warner
20619bcce7 send: set allowZip64=True, to handle large (>2GB) directories
refs #138
2017-02-02 11:40:24 -08:00
Brian Warner
ed674e5ffe transit: increase connection timeout from 15s to 60s
I haven't seen any timeouts yet, but I'm thinking ahead to .onion connections
that might take longer than 15 seconds to establish.
2017-01-16 17:56:16 -05:00
Brian Warner
862820679c don't hang when asked to send a zero-length file
closes #98
2017-01-16 17:29:40 -05:00
Brian Warner
f2704c6ce0 cli: oops, fix ssh args
wish there were some tests for this
2017-01-16 11:34:32 -05:00
Brian Warner
df62e16462 cli: handle tor args in 'ssh' subcommands 2017-01-16 11:29:20 -05:00
Brian Warner
47007273ec rewrite Tor support (py2 only)
The new TorManager adds --launch-tor and --tor-control-port= arguments
(requiring the user to explicitly request a new Tor process, if that's what
they want). The default (when --tor is enabled) looks for a control port in
the usual places (/var/run/tor/control, localhost:9051, localhost:9151), then
falls back to hoping there's a SOCKS port in the usual
place (localhost:9050). (closes #64)

The ssh utilities should now accept the same tor arguments as ordinary
send/receive commands. There are now full tests for TorManager, and basic
tests for how send/receive use it. (closes #97)

Note that Tor is only supported on python2.7 for now, since txsocksx (and
therefore txtorcon) doesn't work on py3. You need to do "pip install
magic-wormhole[tor]" to get Tor support, and that will get you an inscrutable
error on py3 (referencing vcversioner, "install_requires must be a string or
list of strings", and "int object not iterable").

To run tests, you must install with the [dev] extra (to get "mock" and other
libraries). Our setup.py only includes "txtorcon" in the [dev] extra when on
py2, not on py3. Unit tests tolerate the lack of txtorcon (they mock out
everything txtorcon would provide), so they should provide the same coverage
on both py2 and py3.
2017-01-15 22:39:03 -05:00
Brian Warner
203216c0ff cli: move TorArgs out to separate decorator 2017-01-15 22:21:29 -05:00
Brian Warner
aa772858f5 cli: print useful error when --tor is requested but unavailable 2017-01-15 17:35:46 -05:00
Brian Warner
33370bb1b3 transit: mention tor when describing connections that use it 2017-01-15 17:03:40 -05:00
Brian Warner
bcac0c74f3 codes: don't assume 'readline' has a __doc__
This fixes cygwin, which (for some reason) doesn't include docstrings in the
readline module.

closes #111
2017-01-14 17:56:49 -05:00
Brian Warner
b3763f9e78 show "you can use tabs" reminder if code was input without completion
refs #15
2017-01-12 16:14:42 -08:00
Brian Warner
62b069dea6 Wormhole: control stderr 2017-01-12 16:14:42 -08:00
Brian Warner
2e3a0d4a1d change URL of public relay to new DNS names
These point to the same host (same IP address) as before, but the new names
are tied to the project's official domain (magic-wormhole.io), rather than my
personal one, so they can be managed independently.
2017-01-02 23:42:44 -05:00
Brian Warner
92f8c60b31 upgrade to versioneer-0.18 2017-01-01 14:10:57 -05:00
Brian Warner
7d995ca1d5 transit server: respect --blur-usage= by not logging connections 2017-01-01 13:00:35 -05:00
Brian Warner
b2fd899ac9 prioritize relay connections
closes #103
2016-12-31 00:33:00 -05:00
Brian Warner
8b864c3eae parse/transmit/record hint priorities
Use --transit-helper=tcp:HOST:PORT:priority=1.3 to override the default 0.0 .
Larger (positive) priority numbers will be attempted first.
2016-12-31 00:32:42 -05:00
Brian Warner
bc17047983 test_transit: refactor, simplify 2016-12-31 00:31:23 -05:00
Brian Warner
1abe733a81 more coverage: parse_hint_argv 2016-12-31 00:25:15 -05:00
Brian Warner
fe6ff466d8 more coverage: parse_tcp_v1_hint 2016-12-31 00:21:34 -05:00