Commit Graph

24 Commits

Author SHA1 Message Date
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
John Brooks be5a8f1f4e core: Add functions for publishing onion services 2016-08-28 19:59:49 -06:00
John Brooks bec3784f2f core: Track Tor's connectivity state and other details 2016-08-28 19:59:49 -06:00
John Brooks 9fb3aa33b5 cli: Start a trivial readline-style interface 2016-08-16 17:58:39 -07:00
John Brooks 0b44f08f32 rpc: Draft more RPC API calls 2016-08-16 17:43:39 -07:00
John Brooks d5cb5feff1 core: Clean up network implementation 2016-08-02 23:39:13 -06:00
Robin Burchell 5e08afa64f Fix README markup. 2016-08-03 01:39:03 +02:00
John Brooks ec680bad67 gitignore 2016-08-02 17:36:28 -06:00
John Brooks 5be932a194 This is definitely not related to Ricochet 2016-08-02 17:35:42 -06:00
John Brooks f91f007295 backend/cli: More RPC feature demos 2016-08-02 17:35:42 -06:00
John Brooks 7733c6d572 core: Prototype tor control connection and API 2016-08-02 17:35:42 -06:00
John Brooks 74dc289e09 core: Prototype config parser 2016-08-02 17:35:42 -06:00
John Brooks eee2dd703d core: Add utils/publisher 2016-08-02 17:35:42 -06:00
John Brooks 06294898f6 README 2016-08-02 17:35:42 -06:00
John Brooks 0547162586 Skeleton of RPC 2016-08-02 17:35:39 -06:00
John Brooks 0508f0b5e3 Skeleton of core API 2016-06-30 21:18:55 -06:00