Commit Graph

5067 Commits (4c1f6112a7adf9ce85280a36ef9052904263d0f0)

Author SHA1 Message Date
Thomas Winget bd4f239aa3 preconstructed dicts for error/timeout/ok
also move messages' statuses into their own namespace
11 months ago
dr7ana 2ee70921bc review fixes 11 months ago
Jason Rhinelander 1ca852d2f5 Delete llarp::util::memFn
It's unnecessary abstraction that barely simplifies anything, and is now
only used in one single place anyway, which is easily replaced with a
(unabstracted) lambda.
11 months ago
Thomas Winget 32395caec1 build fixes, clang-format, minor touch-ups 11 months ago
Thomas Winget 9e9c1ea732 chahca nonce size is 24 bytes
Lots of code was using 32-byte nonces for xchacha20 symmetric
encryption, but this just means 8 extra bytes per packet wasted as
chacha is only using the first 24 bytes of that nonce anyway.

Changing this resulted in a lot of dead/dying code breaking, so this
commit also removes a lot of that (and comments a couple places with
TODO instead)

Also nounce -> nonce where it came up.
11 months ago
Thomas Winget abb2f63ec6 path control message response status changes
change path control message inner message response to take just a
string, which will be a bt-encoded response with an early key for
status.  If there is a timeout we pass a bt dict that only has that as
the status, else the response we de-onioned should have either an OK
status or some other error.

change messages to use new status key

correctly call Path::EnterState on path build response
11 months ago
Thomas Winget e7632d0a30 omit breaking RC stuff pending refactor
It seems RC refactor will obviate the need for a "get individual RC"
method, so this comments out some usage of that to sidestep build
errors, rather than correcting them in a way that will just be wasted.
11 months ago
Thomas Winget b0fb194e2c path control messages and onioning fleshed out
- control messages can be sent along a path
- the path owner onion-encrypts the "inner" message for each hop in the
  path
- relays on the path will onion the payload in both directions, such
  that the terminal relay will get the plaintext "inner" message and the
  client will get the plaintext "response" to that.
- control messages have (mostly, see below) been changed to be invokable
  either over a path or directly to a relay, as appropriate.

TODO:
  - exit messages need looked at, so they have not yet been changed for
    this
  - path transfer messages (traffic from client to client over 2 paths
    with a shared "pivot") are not yet implemented
11 months ago
Thomas Winget c25ced50a3 path build message handling mostly finished
there are a few TODOs which merit further discussion
11 months ago
dr7ana 39c70b575d config addr change
- the one addr to rule them all, and its name was oxen::quic::Address
- no more vectors of inbound/outbound junk
11 months ago
dr7ana 5a628007e1 A soothing re-nomenclatura 11 months ago
dr7ana af0ac28119 Review fixes + misc fixes 11 months ago
Jason Rhinelander 8b70e0ad2b Untangle Endpoint::LookupServiceAsync
- .snodes don't need to support SRV records, so remove that
- untangle the mess of captured lambdas capturing other lambdas
  capturing other lambdas; we still need a chain of nested lambdas
  because we have a chain of callbacked events, but hiding the nesting
  by capturing them in other lambdas didn't improve anything.
11 months ago
dr7ana fa4471f566 {Remote,Local}RC's
- RemoteRC supplants most of the functionality throughout the code of RouterContact
- Next step will be to sort out CI issues, then see if we can get rid of either LocalRC (and therefore RouterContact entirely)
11 months ago
dr7ana 07271f9ae7 RC refactor layout
- Local and Remote RC's now implemented with discrete functionalities and uses
11 months ago
dr7ana 8cbae70369 Weird clang unused variable CI fix 11 months ago
dr7ana 7d713323f0 Windows CI fixes
- some weird function call business
- string formatting
- etc
11 months ago
Jason Rhinelander 16506b6d8b
Default libcrypt to whether or not we find it
Also deliberately don't provide the function at all if we aren't
compiled with libcrypt so that we can't link if we try to call it when
not available.
11 months ago
dr7ana 7ac88616f7 squash 11 months ago
dr7ana b7e21becf0 windows fixes 11 months ago
dr7ana 7314c2a22a CI Fixes, squash 11 months ago
dr7ana 2abe2d9363 Review fixes
- cleaned up include-what-you-use errors (mostly quoted includes)
- misc fixes
11 months ago
Jason Rhinelander 5c3467ecb0 Fix systemd linkage 11 months ago
dr7ana 46ad8d4058 Clang format include sorting + CMake
- includes are now sorted in consistent, logical order; first step in an attempt to fix the tomfoolery (no relation to Tom) brought in by include-what-you-use
- shuffled around some cmake linking to simplify dependency graph
- superfluous files removed
11 months ago
dr7ana bda8b211dd Cmake restructuring 11 months ago
Jason Rhinelander f4f5ab0109 "Refactor" aka delete Crypto/CryptoManager
- Get rid of CryptoManager.
- Get rid of Crypto.
- Move all the Crypto instance methods to llarp::crypto functions.
  (None of them needed to be methods at all, so this is simple).
- Move sodium/ntru initialization into static initialization.
- Add llarp::csrng, which is an available llarp::CSRNG instance which is
  a bit easier than needing to construct a `CSRNG rng{};` in various
  places.
- Various related small simplifications/cleanups.
11 months ago
dr7ana e710cfea47 Review commit 11 months ago
dr7ana 0e451db77f Compilation fixes
- almost all errors have been commented out for refactor or already refactored
- committing this prior to sorting out the cmake structure
- upcoming include-what-you-use application
11 months ago
dr7ana 3ae8fce77d Outbound context absorbed sendcontex
- message transmission routed through refactored handling
- still work to be done, but now to make it compile at least
11 months ago
dr7ana 41312abab0 introset and message transmission underway
- message handling through classes that inherit from PathSet
- cleanups around link_manager
- etc etc
11 months ago
dr7ana 6955f3fae0 initial commit for next PR 11 months ago
Thomas Winget 4755269458 implement sending "path control" (onioned control) message
TODO: handle at transit hop, handle at terminal hop, create and handle responses
11 months ago
Jason Rhinelander 6d1566572b
Coalesce from_string/from_string_view
The version taking a string_view will already be perfectly callable with
a string, so just combine them into one.
12 months ago
Jason Rhinelander 82c945ca24
Remove RC key rotation
We don't have/want this anymore (and on top of that, we *never* used
it in the first place and it probably didn't even work).
12 months ago
Jason Rhinelander 018d7b4a00
Remove optional relay whitelist disabling
Whitelisting is now always-on for relays.  Disabling the option is never
used and is unsupported/unmaintained (it was, in theory, to allow
lokinet as a separate usage in a non-service-node relay mode, i.e. on a
completely separate network).

Confusingly, the option was enabled by the `[lokid]:enabled` config
parameter.
12 months ago
Jason Rhinelander 26fa988d69
Remove router nickname
I don't think Kee needs it anymore.
12 months ago
Jason Rhinelander 1d84e7cbd5
Untangle messy nested dependency tree
lokinet-cryptography depends on lokinet-base which depends on
lokinet-cryptography.

Fixed this but splitting lokinet-cryptography into the libntrup code
(which is what is really needed) and the llarp/crypto code (which isn't
needed for lokinet-base).
12 months ago
dr7ana e4315cdc69 More message handling underway 12 months ago
dr7ana 6b1e3fbbc0 Touched up path build message handling 12 months ago
dr7ana a6f901a3a9 RIP everything 12 months ago
dr7ana 577f5e61ea De-mutexing
- mutexes in nodedb and rc_lookup_handler removed
- implemented thread-safe queueing to event loop for previously locked accesses
12 months ago
dr7ana 5ccec24470 callsafe
- Added call_get to ev.hpp to queue event loop operations w/ a return value
- de-mutexed NodeDB and made all operations via event loop. Some calls to NodeDB methods (like ::put_if_newer) were wrapped in call->get's, but some weren't. All function bodies were using mutex locks
12 months ago
dr7ana c8dae875b5 Path routing partially implementing
- Reworking how paths to services and snodes
- pushing for Tom to rebase for path handling
12 months ago
Thomas Winget 2cc02d7b60 handle path build requests, generate responses 12 months ago
dr7ana bd81357f62 Path message transmission
- implementing DHT message transmission methods and surrounding functionalities across paths
12 months ago
dr7ana 65bd224cf0 Exit endpoints implemented
- free standing functions in link_manager
- sign and serialize functionalities siloed in llarp/messages/exit.hpp
1 year ago
dr7ana 4ed6a01e02 following up before Tom meeting 1 year ago
Thomas Winget f35f7fe3f2 refactor path build message construction, no more async nonsense 1 year ago
dr7ana 206bd0b85e wawaweewa 1 year ago
dr7ana 1a9f977208 Message method implementation continued
- tons of surrounding stupid refactoring required
1 year ago
dr7ana ad007ff832 libquic/oxen-mq/oxenc version bumps 1 year ago
dr7ana d9ead7d0f6 crypto and message encoding
- libsodium calls streamlined and moved away from stupid typedefs
- buffer handling taken away from buffer_t and towards ustrings and strings
- lots of stuff deleted
- team is working well
- re-implementing message handling in proper link_manager methods
1 year ago
dr7ana ae319091d6 libquic bump 1 year ago
dr7ana d0c3837384 libquic bparser merged
- bumped version to latest main branch commit
- wired up callbacks to set RPC request stream on creation
- methods for I/O of control and data messages through link_manager
1 year ago
dr7ana a3e6cec7e7 Address type migration + libquic bump
- llarp/router/router.hpp, route_poker, and platform code moved to libquic Address types
- implementing required methods in link_manager for connection establishment
- coming along nicely
1 year ago
dr7ana bfa9629779 More carving + libquic bump
- bumped libquic to begin implementing dependent features on connection open/close signals
- more gutting of interface classes
1 year ago
dr7ana aaf688cf81 Deleted a lot
- RIP llarp/iwp/* and most of llarp/link
1 year ago
dr7ana fd527d612f Carving through llarp/link 1 year ago
dr7ana a4272c4503 Added span backport 1 year ago
dr7ana 7f8207d5d3 Nuked superfluous interface classes
RIP:
- i_link_manager
- i_outbound_message_handler
- i_gossiper
- i_outbound_session_maker
- i_rc_lookup_handler
1 year ago
dr7ana 821cbeaacf warnings_as_errors fixes 1 year ago
dr7ana 511c20cdb6 Message handling methods
- `::handle_message` is transposed; Rather than the message calling the method and taking a reference to the router, the router should have a handle_message method and take a reference to the message
- `::EndcodeBuffer` takes a string reference, to which the result of `::bt_encode()` is assigned
1 year ago
dr7ana 11e54f6552 More message refactoring
- routing messages and surrounding code
- shim code in place for iteration and optimization after deciding what to do with buffer, string handling, and subsequent function calls
1 year ago
dr7ana a921575c55 mein gott 1 year ago
Thomas Winget e2e7ed3490 pass datagram data cb to endpoint ctor, not listen/connect
Still ngtcp2 link errors, but everything else seems to build.  Have not
checked tests; not likely they will build or be correct if broken.
1 year ago
Jason Rhinelander d92d95177d
ngtcp2 build fix
-std=c99 breaks ngtcp2's build -- it appears to depend on GNU extensions
when compiling on linux, so don't force compiler C extensions off.
1 year ago
Thomas Winget a44fdab460 LinkManager linker issues / explicit constructor 1 year ago
Jason Rhinelander c92facc15e
Minor cleanups 1 year ago
Jason Rhinelander 78f866347b
Remove unnecessary static_pointer_cast 1 year ago
Thomas Winget 99be31b72f compiles, but does not link 1 year ago
Thomas Winget 450121734a liblokinet compilation issues from implicit ngtcp2 version bump
Note: this is compilation-fixing only.  Behavior fixing will come later with combining
the earlier efforts on liblokinet with the new wire protocol changes.
1 year ago
dr7ana 0260da6bd9 cleaning up after tom 1 year ago
dr7ana 620f916e65 Bump oxen-libquic to latest PR's 1 year ago
Thomas Winget ab86318404 Partial implementation of libquic as wire protocol
TODO:

- set up all the callbacks for libquic

- define control message requests, responses, commands

- plug new control messages into lokinet (path creation, network state, etc)

- plug connection state changes (established, failed, closed, etc.) into lokinet

- lots of cleanup and miscellanea
1 year ago
dr7ana ad5055b85f cmake tweaks for redundant dependencies (WIP) 1 year ago
Thomas Winget 22ac3cd26e initial quic wire proto Endpoint skeleton 1 year ago
Thomas Winget 9b42a21ca2 initial quic wire proto Connection skeleton 1 year ago
dr7ana 9acac2c33e CI fixes
- oxen-logging updated to bump fmt version
- version bump oxen-logging to fix fmt version
- version bump oxen-mq to solve uniform distribution error
- misc errors introduced by above version bumps
- clang-format 14 -> 15
1 year ago
Jason Rhinelander ab606c48d4
Rename `add_braces` -> `ipv6_brackets`
"Braces" seemed misleading as usually that terms refers to `{}` rather
than `[]`, and also this only affects ipv6 addresses.
1 year ago
Jeff Becker fc050b3a09
fix issue #2179
when setting libunbound's upstream dns, we need to not pass in the square braces of an ipv6 address.
we also net udp handles have ipv6 address for the local ip.
1 year ago
GNU/LongYap 89c5c73be4
add #include <cstdint>
add #include <cstdint> to fix build error
1 year ago
Jason Rhinelander b48e8b23ea
Merge pull request #2106 from majestrate/fix-config-comment-typo-2023-01-05
fix typo in config comments
2 years ago
Jeff Becker d7d3a4e774
fix issue #2138
in rpc client, contention on a null lock happened.
fix this by making the sending of pings always done in the logic
thread. this is done by wrapping the lambda we made with EventLoop::make_caller()
2 years ago
Jason Rhinelander 366d0c1be9
Merge pull request #2128 from majestrate/oxend-defer-ping-2023-01-29
ping oxend after getting identity keys
2 years ago
dan 9bfe881a35 OMQ_Request handling logic change 2 years ago
dan b2e8cde64b working new endpoints
- added hotswap functionality
- map_exit and unmap_exit working
2 years ago
dan 0632e88de0 Make new header for json type conversions 2 years ago
Jeff Becker 02b392881b add llarp::service::Endpoint::map_exit 2 years ago
Jeff Becker 031e173f1a
ping oxend after getting identity keys
fixes #2125
2 years ago
dan d3e69fe3c5 added unmapexit and listexit endpoints 2 years ago
dan d37398a915 review comments 2 years ago
dan 13b01c86a6 Updated RpcServer Initialization and Logic
-- Moved all RPCServer initialization logic to rpcserver constructor
    -- Fixed config logic, fxn binding to rpc address, fxn adding rpc cats
    -- router hive failed CI/CD resulting from outdated reference to rpcBindAddr
    -- ipc socket as default hidden from windows (for now)
refactored config endpoint
    - added rpc call script (contrib/omq-rpc.py)
    - added new fxns to .ini config stuff
    - added delete .ini file functionality to config endpoint
    - added edge case control for config endpoint

add commented out line in clang-form for header reorg later
2 years ago
Jeff Becker c682247f87
fix typo in config comments
lokinetN -> lokitunN
2 years ago
Jeff Becker 2498a085db
rearrange cmake libraries
define relations and document them.
make responsibilies clear and consice.
2 years ago
Jeff Becker 4508c59cd3
redo includes to be consistent 2 years ago
drouhana 0edfe8ff83
IPC Socket Fixes (#2111)
* Updated RpcServer Initialization and Logic

-- Moved all RPCServer initialization logic to rpcserver constructor
-- Fixed config logic, fxn binding to rpc address, fxn adding rpc cats
-- router hive failed CI/CD resulting from outdated reference to rpcBindAddr
-- ipc socket as default hidden from windows (for now)
2 years ago
Thomas Winget fbfd70a35a Fix incorrect usage of oxen-logging syslog
Previously oxen-logging was erroneously hard-coded to use the target
"lokinet" for system logs.  Obviously this is wrong for anything else
which uses oxen-logging and the system log.  This changes our call to
add_sink to pass "lokinet" as the target rather than the config
filename, and updates oxen-logging to use that argument correctly.
2 years ago
dan dc7f3cee22 Replace cxxopts with CLI11
- Simiplifies CLI code for future modification
- filesystem library linked in cmake check_for_std_filesystem file
2 years ago
Jason Rhinelander 9929445970
Fix poll_block_hash being set in the wrong place 2 years ago
majestrate e1f1b8b1c7
Merge pull request #2066 from jagerman/another-obsolete-bs
Remove another obsolete bootstrap
2 years ago