Storage server for Oxen Service Nodes
Go to file
Jason Rhinelander bf6d6d6973 Work around Session not exposing ed25519 pubkeys
Session ids are, unfortunately, x25519 pubkeys rather than ed25519, and
there isn't a one-to-one conversion from x to ed, so we have to have the
client send along the ed25519 pubkey *along with* the 05-prefixed x25519
pubkey, then we also check that the given ed25519 converts to the x25519
pubkey when checking client signatures.
2021-06-20 23:10:40 -03:00
.github/ISSUE_TEMPLATE Update issue templates 2019-04-17 13:46:28 +10:00
.vscode check the difficulty every 10 mins 2019-06-06 17:13:17 +10:00
cmake Fix/update boost mirror URL 2021-06-16 18:59:17 -03:00
common Remove _t suffix from concrete structs 2021-06-16 19:37:33 -03:00
contrib Add direction to xchacha20 shared key 2021-04-21 21:31:39 -03:00
crypto Move parse_pubkey into oxend_key 2021-06-16 18:59:06 -03:00
httpserver Work around Session not exposing ed25519 pubkeys 2021-06-20 23:10:40 -03:00
storage DB migration fixes 2021-06-17 12:09:37 -03:00
tests More test suite 2021-06-20 11:11:34 -03:00
unit_test Rename badly named hex_to_u64, document it, and test it. 2021-06-16 22:29:38 -03:00
utils Add swarm (as hex string) into swarm members response 2021-06-17 11:41:30 -03:00
vendors SQLiteCpp: Disable column metadata 2021-06-17 12:02:59 -03:00
.clang-format Run clang-format 2019-03-19 14:47:55 +11:00
.dockerignore docker support 2019-04-26 10:35:05 +00:00
.drone.jsonnet Allow using system jemalloc for non-static build 2021-06-16 18:59:06 -03:00
.gitignore Ignore swapfiles and reject localhost binding 2019-07-25 13:12:44 +10:00
.gitmodules Add basic swarm testnet test suite 2021-06-20 00:47:57 -03:00
CMakeLists.txt Bump version to 2.2.0 2021-06-16 19:37:33 -03:00
Dockerfile Allow http in onion requests to an external server 2021-03-29 17:28:34 +11:00
LICENSE Add MIT license 2018-11-16 02:04:02 +11:00
Makefile No longer require POW for message storage 2021-03-26 12:01:47 +11:00
mock_lokid.py Always strip the 05 from start of client request pubkeys 2019-03-28 15:33:41 +11:00
README.md Build fixes 2021-06-16 18:59:06 -03:00

loki-storage-server

Storage server for Loki Service Nodes

Requirements:

  • Boost >= 1.66 (for boost.program_options)
  • OpenSSL >= 1.1.1a (for X25519 curves)
  • sodium >= 1.0.17 (for ed25119 to curve25519 conversion)
  • autoconf (for building jemalloc)

You can, however, download and build static versions these dependencies (other than autoconf) as part of the build by adding the -DBUILD_STATIC_DEPS=ON option to cmake.

Can use RelWithDebInfo instead of Release if you want to include debug symbols to provide developers with valueable core dumps from crashes. Also make sure you don't have an older (than 4.3.0) libzmq header in /usr/local/include, if so please install a new version.

git submodule update --init --recursive
mkdir build && cd build
cmake -DDISABLE_SNODE_SIGNATURE=OFF -DCMAKE_BUILD_TYPE=Release ..
cmake --build .
./loki-storage 0.0.0.0 8080

The paths for Boost and OpenSSL can be specified by exporting the variables in the terminal before running make:

export OPENSSL_ROOT_DIR = ...
export BOOST_ROOT= ...

Then using something like Postman (https://www.getpostman.com/) you can hit the API:

post data

HTTP POST http://127.0.0.1/store
body: "hello world"
headers:
- X-Loki-recipient: "mypubkey"
- X-Loki-ttl: "86400"
- X-Loki-timestamp: "1540860811000"
- X-Loki-pow-nonce: "xxxx..."

get data

HTTP GET http://127.0.0.1/retrieve
headers:
- X-Loki-recipient: "mypubkey"
- X-Loki-last-hash: "" (optional)

unit tests

mkdir build_test
cd build_test
cmake ../unit_test -DBOOST_ROOT="path to boost" -DOPENSSL_ROOT_DIR="path to openssl"
cmake --build .
./Test --log_level=all