summaryrefslogtreecommitdiff
path: root/Assistant/Pairing.hs
Commit message (Collapse)AuthorAge
* Improve local pairing behavior when two computers both try to start the ↵Gravatar Joey Hess2013-11-02
| | | | | | | | | | | | | | | | | pairing process separately. I was able to reproduce something very like this bug by starting pairing separately on both computers under poor network conditions (ie, weak wifi on my front porch). Neither computer showed an alert for the PairReq messages it was seeing (intermittently) from the other. So, I've made a new PairReq message that has not been seen before always make the alert pop up, even if the assistant thinks it is in the middle of its own pairing process (or even another pairing process with a different box on the LAN). (This shouldn't cause a rogue PairAck to disrupt a pairing process part way through.)
* Makefile now builds using cabal, taking advantage of cabal's automatic ↵Gravatar Joey Hess2013-02-27
| | | | | | | | | detection of appropriate build flags. The only thing lost is ./ghci Speed: make fast used to take 20 seconds here, when rebuilding from touching Command/Unused.hs. With cabal, it's 29 seconds.
* can now build Android targeted binaryGravatar Joey Hess2013-02-10
| | | | | | | | | | | | | | | | Various things that don't work on Android are just ifdefed out. * the webapp (needs template haskell for arm) * --include and --exclude globbing (needs libpcre, which is not ported; probably I'll make it use the pure haskell glob library instead) * annex.diskreserve checking (missing sys/statvfs.h) * timestamp preservation support (yawn) * S3 * WebDAV * XMPP The resulting 17mb binary has been tested on Android, and it is able to, at least, print its usage message.
* hlintGravatar Joey Hess2012-09-13
|
* change to newtypeGravatar Joey Hess2012-09-13
|
* pairing works!!Gravatar Joey Hess2012-09-11
| | | | | | | | | Finally. Last bug fixes here: Send PairResp with same UUID in the PairReq. Fix off-by-one in code that filters out our own pairing messages. Also reworked the pairing alerts, which are still slightly buggy.
* keep track of the stage we're at in pairingGravatar Joey Hess2012-09-11
| | | | | This avoids us responding to our own pairing messages, as well as ignoring any out of order messages that might be received somehow.
* work around a bug in YesodGravatar Joey Hess2012-09-11
| | | | The PathPiece instance for Text results in a 404 for T.empty.
* add a UUID to pair requestsGravatar Joey Hess2012-09-11
| | | | | | | Pair requests the the same UUID are part of the same pairing session, which allows us to detect attempts to brute force the shared secret, as that will result in pair requests with the same UUID that are not verified with the right secret.
* handle stale PairAcksGravatar Joey Hess2012-09-11
|
* pairing probably works now (untested)Gravatar Joey Hess2012-09-10
|
* responding to pair requests *almost* worksGravatar Joey Hess2012-09-10
|
* broke out fairly generic ssh stuff to Assistant.Ssh so pairing can use it tooGravatar Joey Hess2012-09-10
| | | | | I'd rather Utility.Ssh, but the SshData type is not sufficiently clean and generic for Utility.
* moved the PairStage inside the Verifiable dataGravatar Joey Hess2012-09-08
|
* add a PairDone messageGravatar Joey Hess2012-09-08
|
* add remote directory to pair requestGravatar Joey Hess2012-09-08
|
* filter out our own pairing requestsGravatar Joey Hess2012-09-08
| | | | | Due to being multicast, requests sent by one thread are received by the listener in another thread.
* fix build without pairing supportGravatar Joey Hess2012-09-08
|
* don't pass .local hostname over the wireGravatar Joey Hess2012-09-08
| | | | | | The remote computer may not support mDNS. Instead, pass over the uname -a hostname, and the IP address, and leave best hostname calculation to the remote side.
* fix fd leakGravatar Joey Hess2012-09-08
| | | | also, tested on ipv6.. doesn't work
* implement pair request broadcastsGravatar Joey Hess2012-09-08
| | | | | | | | | | Pair requests are sent on all network interfaces, and contain the best available hostname to use to contact the host on that interface. Added a pairing in progress page. Revert "reduce some boilerplate using ghc extensions", because it caused overlapping instances for Text.
* pairing passphrase entry form, validation, etcGravatar Joey Hess2012-09-08
| | | | | | Actually 3 forms in one, this handles the initial passphrase entry, and the confirmation, and also varys wording if the same user or a different user is confirming.
* yesod skelton and routes for pairingGravatar Joey Hess2012-09-08
| | | | yet more changes to pairing message data types
* broke out Verifiable to a utility library, and added a quickcheck testGravatar Joey Hess2012-09-07
|
* massively simplified the pairing protocolGravatar Joey Hess2012-09-07
| | | | | | Only 2 messages are needed to do pairing. And added a nice Verifiable data type.
* high-level pairing implementationGravatar Joey Hess2012-09-07
Roughed out a data type that models the whole pairing conversation, and can be serialized to implement it. And a state machine to run that conversation. Not yet hooked up to any transport such as multicast UDP.