add directory specific readmes

Jeff 7 months ago
parent 769bc1e8df
commit 23fd46c0db
Signed by: jeff
GPG Key ID: 025C02EE3A092F2D

@ -0,0 +1,75 @@
grab bag directory for non core related platform specific non source code
[Network Manager shims](NetworkManager)
[apparmor profiles](apparmor)
[default self signed network bootstrap files](bootstrap)
[continuous integration scripts](ci)
[cross compile cmake toolchains](cross)
[embedded lokinet example code](liblokinet)
[macos related hacks and associated hellscape items](macos)
[static deps patch files](patches)
[python scripts](py)
[systemd-resolved profiles](systemd-resolved)
android build shim:
windows via mingw cross compiler build shim:
macos build shim:
iphone build shim:
linux cross compile build shim:
apply multiple patches script:
[bencode]( pretty-print script:
* apt repo pubkey:
clang-format / jsonnetfmt / swiftformat helper, will check or correct code style:
git hooks:
base16 to [z-base32]( converter
lokinet logo:
* lokinet.svg
cpack installer text:
* readme-installer.txt

@ -1,92 +0,0 @@
#include <llarp/config/config.hpp>
#include <llarp/router_contact.hpp>
#include <llarp/util/logging/logger.hpp>
#include <llarp/util/logging/ostream_logger.hpp>
#include <cxxopts.hpp>
#include <string>
#include <vector>
dumpRc(const std::vector<std::string>& files)
nlohmann::json result;
for (const auto& file : files)
llarp::RouterContact rc;
const bool ret = rc.Read(file.c_str());
if (ret)
result[file] = rc.ToJson();
std::cerr << "file = " << file << " was not a valid rc file\n";
std::cout << result << "\n";
return true;
} // namespace
main(int argc, char* argv[])
cxxopts::Options options(
"LokiNET is a free, open source, private, "
"decentralized, \"market based sybil resistant\" "
"and IP based onion routing network");
options.add_options()("v,verbose", "Verbose", cxxopts::value<bool>())(
"h,help", "help", cxxopts::value<bool>())(
"config file",
"dump", "dump rc file", cxxopts::value<std::vector<std::string>>(), "FILE");
const auto result = options.parse(argc, argv);
if (result.count("verbose") > 0)
llarp::LogContext::Instance().logStream =
std::make_unique<llarp::OStreamLogStream>(true, std::cerr);
llarp::LogDebug("debug logging activated");
llarp::LogContext::Instance().logStream =
std::make_unique<llarp::OStreamLogStream>(true, std::cerr);
if (result.count("help") > 0)
std::cout << << std::endl;
return 0;
if (result.count("dump") > 0)
if (!dumpRc(result["dump"].as<std::vector<std::string>>()))
return 1;
catch (const cxxopts::OptionParseException& ex)
std::cerr << ex.what() << std::endl;
std::cout << << std::endl;
return 1;
return 0;

@ -0,0 +1,10 @@
this contains the main functions for all of our executables
lokinet.cpp - lokinet full daemon
lokinet.swift - macos sysex/appex
lokinet-bootstrap.cpp - lokinet-bootstrap binary (deprecated / to be removed)
lokinet-vpn.cpp - lokinet-vpn tool for rpc control of lokinet, needs a better name.

external/ vendored

@ -0,0 +1,13 @@
directory for git submodules
* cpr: curl for people, used by lokinet-bootstrap toolchain (to be removed)
* cxxopts: cli argument parser (to be removed)
* ghc-filesystem: `std::filesystem` shim lib for older platforms (like macos)
* ngtcp2: quic implementation
* nlohmann: json parser
* oxen-encoding: [bencode]( header-only library
* oxen-logging: spdlog wrapper library
* oxen-mq: zmq wrapper library for threadpool and rpc
* pybind11: for pybind modules
* sqlite_orm: for peer stats db
* uvw: libuv header only library for main event loop

@ -0,0 +1 @@
jni binding for lokinet vpn using android vpn api

@ -0,0 +1,55 @@
this directory contains the meat of the lokinet core implemenation
[apple platform specific bits](apple)
[configuration bits](config)
[network consensus parts](consensus)
[compile time constants](constants)
[cryptography interface and implementations](crypto)
[DHT related code](dht)
[DNS client/server/parsing library](dns)
[event loop interface and implementations](ev)
[snode endpoint backend implementation](exit)
[onion endpoint frontend adapters](handlers)
[lokinet wire protocol](iwp)
[lokinet link layer interface types](link)
[link layer (node to node) messages](messages)
[platform agnostic-ish network api](net)
[onion path management](path)
[peer stats collection (likely to be refactored)](peerstats)
[quic over lokinet abstraction](quic)
[central god objects](router)
[routing (onion routed over paths) messages](routing)
[rpc client/server](rpc)
[onion endpoint backend implemenation](service)
[net simulation code (likely to be binned)](simulation)
[net simulation tooling (used by pybind)](tooling)
[utility function dumping ground (to be fixed up)](util)
[platform specific vpn bits with high level abstractions](vpn)
[windows platform bits](win32)

@ -0,0 +1 @@
pybind lokinet module for integration tests and network simulation

@ -0,0 +1,5 @@
unit tests and such
to enable unit tests, add cmake flag `-DWITH_TESTS=ON`
unit tests can be built and run with the `check` target.