Commit Graph

65 Commits

Author SHA1 Message Date
John Brooks 3dc6c65468 cli: Use in-process backend by default and add -backend param
The in-process backend uses 'innernet', which is a net.Listener and
net.Conn implementation using in-process buffers instead of real
sockets.

Out-of-process backends can be used with the '-backend' parameter. An
additional flag is required to allow connections to non-localhost TCP
backends.
2016-11-04 23:25:05 -06:00
John Brooks 2ee0c07942 core: Move RpcServer into core 2016-11-03 22:37:00 -06:00
John Brooks 2a0e5b7976 core: Make onion listeners delete the service on close 2016-10-28 16:17:19 -06:00
John Brooks 1c0c3242eb core: Improve start/stop of contact connections 2016-10-28 16:17:19 -06:00
John Brooks 6f7e030811 core: Handle response to outbound contact requests 2016-10-28 16:17:18 -06:00
John Brooks b6fd295ac1 cli: Implement add-contact and delete-contact 2016-10-28 09:49:10 -06:00
John Brooks 0e350c85a4 cli: Fix another case of the prompt changing incorrectly 2016-10-28 09:47:46 -06:00
John Brooks 8baf1034f6 core: RPC and config for outbound contact requests 2016-10-27 14:18:00 -06:00
John Brooks 2fd3cd2ea0 rpc: Add 'go generate' commands and update ContactRequest
It's now possible to regenerate the protobuf files by calling 'go
generate' in rpc/. You will need protoc and protoc-gen-go in PATH.
This is only necessary after changing the protobuf definitions.
2016-10-27 13:50:34 -06:00
John Brooks ffe15e6f0c cli: Track and use conversation active state properly 2016-10-26 16:12:16 -06:00
John Brooks db6295d5c8 cli: Prettify contacts list 2016-10-26 15:26:21 -06:00
John Brooks 60cdd16311 cli: Count unread messages and handle message updates 2016-10-26 15:17:40 -06:00
John Brooks e7a9f991f9 cli: Fix conversation prompt update logic 2016-10-26 14:57:48 -06:00
John Brooks 3ed991898a cli: Smarter prompts, and always use correct stdout 2016-10-23 15:42:02 -07:00
John Brooks eb9814c14b cli: Improve use of readline slightly 2016-10-23 11:37:57 -07:00
John Brooks 8664873b5b cli: Keep track of conversations and prettify output 2016-10-22 17:52:26 -07:00
John Brooks a22de02531 cli: Make UI struct singleton 2016-10-22 17:50:21 -07:00
John Brooks d37d40def4 Change imports after moving repository 2016-10-16 22:26:35 -06:00
John Brooks 261fafe804 Update README 2016-10-16 22:18:52 -06:00
John Brooks 7c20d535c7 core: Fix build 2016-10-16 15:50:59 -06:00
John Brooks e9f22c64ac cli: Improve startup process 2016-10-16 15:50:34 -06:00
John Brooks c8bfe4663e cli: Separate UI logic and fix client threadsafety 2016-10-15 22:57:16 -06:00
John Brooks 99d44e1278 cli: Fix threading issues around event monitors 2016-10-15 21:57:53 -06:00
John Brooks c089cf3e34 cli: Better tracking of contact list state 2016-10-15 21:13:02 -06:00
John Brooks 70af42e39e core: Remove old placeholder files 2016-10-15 19:17:54 -06:00
John Brooks bb530cfc2f core: Track unread state of received messages 2016-10-15 19:00:16 -06:00
John Brooks 7fe2363801 core: More of the conversation implementation
Improved parts of the conversation implementation, moved the
conversation event monitor to Identity, added event monitor
population, and other minor changes.
2016-10-15 18:04:19 -06:00
John Brooks f9bc09c520 core: Adapt to protocol API changes 2016-10-09 17:31:26 -07:00
John Brooks e960c296fe cli: Minimal conversation functionality 2016-10-06 16:50:52 -07:00
John Brooks ee0c19b28b core: Minimal message-sending functionality
This is broken in many ways.
2016-10-06 16:50:07 -07:00
John Brooks c50b1f29d4 cli: Monitor for conversation events also 2016-10-05 14:38:41 -07:00
John Brooks 623dccb26d core: Early proof-of-concept conversations API 2016-10-05 14:38:18 -07:00
John Brooks e1db24360b cli: Minor output cleanup and contacts command 2016-09-29 22:17:03 -07:00
John Brooks f56204116c core: Make outbound contact connections
Refactor the connection management on contacts to have a goroutine
responsible for tracking the state of a contact's connection, launching
and canceling outbound attempts when appropriate, etc.
2016-09-29 22:13:55 -07:00
John Brooks fc0c6b3c95 core: Add OnionConnector for outbound connections 2016-09-29 22:11:37 -07:00
John Brooks ec8d6f5430 core: Add Network WaitForProxyDialer method 2016-09-27 15:24:16 -06:00
John Brooks fe117d10c8 core: Choose a SOCKS port from tor's listeners 2016-09-20 16:37:59 -06:00
John Brooks 114720bd6d core: Handle connection close for contacts 2016-09-19 21:32:16 -06:00
John Brooks 289d0f4dc2 core: Send contact update events on status change 2016-09-19 19:53:21 -06:00
John Brooks 6cee5d7b45 cli: Start implementing more RPC logic 2016-09-16 15:26:14 -06:00
John Brooks a52de9078c core: Attach protocol connections to Contact 2016-09-15 18:32:58 -06:00
John Brooks 6e68f861d8 rpc: Add UNKNOWN connection status for contacts
UNKNOWN is the new default status for contacts. A contact is in the
UNKNOWN state when we're not sure whether they are available or not, and
is in the OFFLINE state when we believe that we're online but attempts
to connect to that contact have failed.
2016-09-15 18:30:37 -06:00
John Brooks 346971368b core: Refactor network reconnection to fix onion republication
A race would cause a call to AddOnionPorts that was blocked waiting for
a control connection to try to publish the service twice, because the
onion republication wasn't done until after the connection status
change.

This is fixed by refactoring the control connection setup to do all
setup before signalling the state change, including copying the list of
onions to publish. The code is slightly cleaner now as well.
2016-09-15 18:16:00 -06:00
John Brooks cf903a3b7d core: Add protocol from s-rah and accept inbound connections
Start using Sarah's protocol implementation (plus some patches to be
merged there), publish the local onion service, and handle inbound
connections.
2016-09-11 21:38:04 -06:00
John Brooks 65f36de79e core: Add forgotten utils/misc.go file 2016-09-11 21:38:03 -06:00
John Brooks 83d4d8841d core: Change the 'Ricochet' API again 2016-09-10 23:00:26 -06:00
John Brooks 20700414fc core: Implement contact list monitor and contact removal 2016-09-02 11:51:24 -05:00
John Brooks 2c4a1c8b37 core: Load contacts from config 2016-08-29 20:46:41 -06:00
John Brooks b74073fd09 core: Load identity from config
Also, slightly refactor Ricochet to be an interface to get the various
top-level components, and let the implementation define it (such as
backend's RicochetCore RPC type)
2016-08-29 19:50:10 -06:00
John Brooks ca3c672975 core: Basic thread-safe and writable config API
This is ugly API for now, but it's a simple and relatively safe
solution. It should be cleaned up later.

Data from the Config object can only be accessed by opening the "root"
for reading (OpenRead) or writing (OpenWrite). Multiple readers may be
open simultaneously, but only one writer, which guarantees atomic
behavior. There are ugly edge-cases for save errors and pointer-style
objects in the config tree, so use good behavior.
2016-08-28 21:36:42 -06:00