Commit graph

80 commits

Author SHA1 Message Date
Maxim Shishmarev
4cdd074dc6 Limit http get_stats to return version number only 2020-09-23 17:42:45 +10:00
Maxim Shishmarev
30f2b7493b Add semi-binary protocol for onion requests 2020-09-21 17:23:06 +10:00
Maxim Shishmarev
861d863e40 Some more C++17 changes 2020-09-15 16:54:49 +10:00
Jason Rhinelander
28f09402e6 Switch to C++17
- updates lokimq to dev branch
- changes compilation mode to C++17 (which is now required by lokimq,
  and already widely applied in lokinet and lokid dev branches)
- replace lokimq::string_view with std::string_view
- replace boost::optional with std::optional, except for:
  - boost::optional<std::function<...>> doesn't need optional at all
    because a std::function<...> is already nullable.
  - boost::optional<T&> isn't supported by std::optional because it
    makes little sense (it is just a `T*`) so just switch to T* instead.
2020-08-08 02:21:33 -03:00
Maxim Shishmarev
1491e3ae31 Use the correct decryption in proxy requests; handle long-polling in direct requests 2020-03-11 15:19:19 +11:00
Maxim Shishmarev
df76317bf1 Add thread synchronisation 2020-03-10 12:54:45 +11:00
Maxim Shishmarev
330581b0d4 Initial lokimq integration. Onion requests to SS. 2020-03-08 21:38:51 +11:00
Maxim Shishmarev
2057d69504 Allow large requests for proxy 2019-12-19 10:37:48 +11:00
Maxim Shishmarev
ce5bb651d1 Allow messenger clients to proxy to Loki's file server 2019-12-18 15:14:11 +11:00
Maxim Shishmarev
4ff4e632ee Allow messenger clients to proxy to other snodes 2019-12-18 13:50:27 +11:00
Maxim Shishmarev
adaa4c1de7 Add public ed25519 key derivation 2019-12-12 16:10:38 +11:00
Maxim Shishmarev
d28a09b28a Incorporate new keys 2019-12-12 13:48:49 +11:00
Jason Rhinelander
b35a92625a Fetch SN private key from lokid on startup
This changes storage server to fetch the SN private key via the RPC call
added in lokid 6.x (which is also used by lokinet) at startup (i.e.
before starting the main event loop).

As a useful side effect of this change it delays storage server startup
until lokid is ready and running as a service node, which means we get
earlier diagnostics about failures from storage server.  It also means
that lokid is very likely to get a ping from the storage server right
away--currently if you restart both storage server starts up must faster
and so the first ping typically fails, which means lokid can't send
uptime proofs until after the second ping.

The --lokid-key option is still accepted as an argument but now ignored
(so that people with it in a config file can still start up).

This also adds a templated function to convert byte sequences to hex to
be able to print it.  (Also removes one from http_connection.cpp that
did the same via sodium for a specific `std::array<uint8_t, 32>`, but
that wasn't actually called anywhere).
2019-12-04 01:04:40 -04:00
Jason Rhinelander
b0dee93624 Allow overriding lokid rpc ip
This makes it easier to work with advanced SN setups that, for example,
split duties between local machines without having to set up port
forwarding.
2019-12-03 15:55:16 -04:00
Maxim Shishmarev
8c9192898c More robust clean-up for incoming connections 2019-10-25 11:28:19 +11:00
Maxim Shishmarev
21d0683f7f Improve diagnostics for open file descriptors 2019-09-25 16:51:05 +10:00
Maxim Shishmarev
6a999b06a0 Properly shutdown http (lokid) connection on deadline timer 2019-09-25 12:15:46 +10:00
Maxim Shishmarev
3e83f84dca
Merge pull request #269 from msgmaxim/correct_hash_testing
Derive tester/testee based on older (more stable) block
2019-09-06 14:28:07 +10:00
Maxim Shishmarev
a0f152018f Derive tester/testee based on older (more stable) block 2019-09-03 16:51:10 +10:00
Maxim Shishmarev
69aa778a70 Make storage server aware of decommissioned nodes; test them 2019-09-02 17:40:17 +10:00
Maxim Shishmarev
d05e65e1c2 Periodically ping other service nodes 2019-08-26 17:29:38 +10:00
Maxim Shishmarev
5d09fbe617 Separate type for user pubkey 2019-08-23 11:58:16 +10:00
Maxim Shishmarev
1860248061 Expose error logs via get_logs endpoint 2019-08-07 17:57:07 +10:00
Maxim Shishmarev
bcd6408831
Don't foget to unsubscribe connections from message notifications (#214) 2019-07-05 16:49:26 +10:00
Beaudan Campbell-Brown
966c60f0bd Bootstrap ips (#213)
* Initial swarm bootstrapping from seed nodes

* Bootstrap the IPs when we have finished syncing, plus don't overwrite valid IPs with defaults

* Review fixed plus lint
2019-07-05 16:15:47 +10:00
Beaudan Campbell-Brown
b2311e65f4
Merge pull request #206 from sachaaaaa/cleanup_main
Declutter main
2019-07-03 14:09:36 +10:00
sachaaaaa
0eac8bbefb declutter main: extract command line parser logic and logging stuff 2019-07-02 16:43:54 +10:00
Beaudan
e918e1c44a Make parse_swarm_update take a block update reference rather that a callback 2019-07-01 17:08:17 +10:00
sachaaaaa
119af0697b Send/verify signature of ssl certificate for snode 2 snode (#180)
* sign cert

* missing changes

* fix bad merge

* use sn_record_t::pub_key() + clang format

* prevent clang format from reordering #includes

* Address reviews

* need travis to find openssl 1.1.1
2019-06-27 14:08:14 +10:00
Maxim Shishmarev
c2d393abc6
Final (minor) API changes before the release (#181)
* remove namespace service_node

* API changes

* fix unit tests not compiling

* clang format
2019-06-26 14:42:45 +10:00
Maxim Shishmarev
9f73e4705a
Merge pull request #173 from msgmaxim/blockchain-req
More refactoring: use a common interface for all Lokid requests
2019-06-24 10:22:12 +10:00
Maxim Shishmarev
d1736a04e9 run clang format 2019-06-24 10:20:43 +10:00
Maxim Shishmarev
881f294ff2 Use lokid client to get swarms 2019-06-21 17:49:56 +10:00
Maxim Shishmarev
f130de3643 Use lokid client to send pings 2019-06-21 17:20:19 +10:00
Maxim Shishmarev
bb8fa64a91 Use lokid_client for blockchain requests 2019-06-21 16:30:26 +10:00
Maxim Shishmarev
4b1dbb2127 small refactor: use common function for sn-sn calls 2019-06-21 12:26:17 +10:00
Beaudan
bd0d4efa0d Add HTTP_ERROR, only trigger callback once, move socket shutdown to destructor 2019-06-20 15:52:55 +10:00
Maxim Shishmarev
681bf862ed better command line arguments handling 2019-06-19 13:25:24 +10:00
Maxim Shishmarev
bcefe0a400
Provide RPC endpoint for retrieving peer test results and other stats (#160)
* Provide RPC endpoint for retrieving peer test results and other stats

* use deque instead of vector

* cutoff as 60 mins from now
2019-06-18 14:54:32 +10:00
Beaudan
135dbb4a05 Only retry storage test for 1 min. Plus a cheeky format 2019-06-17 16:59:01 +10:00
Maxim Shishmarev
7e2f5d3a8d
Merge pull request #150 from loki-project/master
Merge master into dev
2019-06-07 17:01:10 +10:00
sachaaaaa
b607bcb920 use ssl in new "make_https_request" function, used for sn to sn comm 2019-06-07 10:05:05 +10:00
sachaaaaa
1e4e3dbac5 enable SSL for http server 2019-06-07 10:04:34 +10:00
Maxim Shishmarev
94149d3d45 perform blockchain testing alongside storage testing 2019-05-30 10:57:49 +10:00
sachaaaaa
a398a2b412 Token Bucket rate-limiting for snode to snode requests 2019-05-27 16:06:49 +10:00
Maxim Shishmarev
9c1be0cbc1 check tester before performing storage test 2019-05-15 11:20:55 +10:00
Maxim Shishmarev
8704a23b55 disambiguate method name 2019-05-13 15:14:45 +10:00
Maxim Shishmarev
104b72697a check signature for message test requests; address other review comments 2019-05-13 11:20:46 +10:00
Maxim Shishmarev
6314864335 add responding to message tests, retrying if necessary 2019-05-10 15:47:26 +10:00
sachaaaaa
d823bf2a69 command line lokid rpc port option 2019-05-10 11:27:26 +10:00