Commit Graph

424 Commits

Author SHA1 Message Date
Jeff
5b5bd6b44e
dns features (#1404)
* add some dns txt records for stuff we want to expose

* fix txt records

* txt records for snode info

* dont send cname as it mangles the response

* check for 3 parts not 3 characters
2020-10-12 12:18:46 -04:00
Jeff
3b70b99dd2
fix empty config case (#1400)
* fix empty config case

* * fix case for empty ifname / ifaddr on relay
* bail if no dns server bound

* use AssignmentAcceptor
2020-10-09 11:39:39 -04:00
Jeff
50aea744f6
order packets when writing to network interface (#1372)
* order packet writes on userside

* make it compile

* fix pybind
2020-10-08 07:59:01 -04:00
Jeff
56f49a6980
make win32 exits work again (#1367) 2020-09-28 18:43:31 -04:00
Jeff
75ef28531e allow lns subdomains 2020-09-19 10:38:57 -04:00
Jeff
78b40d6725 wire up lns gotnamemessage handler to kitchen sink 2020-09-19 09:29:36 -04:00
Jeff
21930cf667
LNS (#1342)
* initial relay side lns

* fix typo

* add reserved names and refactor test for dns

* lns name decryption

* all wired up (allegedly)

* refact to use service::EncryptedName for LNS responses to include nonce with ciphertext

* fully rwemove tag_lookup_job

* replace lns cache with DecayingHashTable

* check for lns name validity against the following rules:

* not localhost.loki, loki.loki, or snode.loki

* if it contains no dash then max 32 characters long, not including the .loki tld (and also assuming a leading subdomain has been stripped)

* These are from general DNS requirements, and also enforced in
registrations:

* Must be all [A-Za-z0-9-]. (A-Z will be lower-cased by the RPC call).

* cannot start or end with a -

* max 63 characters long if it does contain a dash

* cannot contain -- in the third and fourth characters unless it starts with xn--

* handle timeout in name lookup job by calling the right handler with std::nullopt
2020-09-17 15:18:08 -04:00
Jeff
3ab7db7723
macos route poking (#1333)
* fix up macos route poker logic

* fix typo

* use string_view

* add forgotten header

* full paths

* add debugging

* catch exception on adding route

* workarround for macos

* typofix

* typofix

* fix for macos

* fix command for macos

* because we autopoke remove explicit route poking in rpc

* probably final fix of macos route poking

* split routes instead of deleting them

* dynamic route poking

* move log statement for introset lookup and dont consider bad sessions as able to send

* send convotag reset frame when we have no session

* add exit map to rpc

* use split_any
2020-09-03 18:22:22 -04:00
Thomas Winget
2c6e7b86c3
SRV records fixes (#1332)
* fix a log print log level

* correctly match SRV record service and protocol...

* tests for new dns question functions
2020-08-31 19:25:58 -04:00
Thomas Winget
b1c14af938
SRV Record handling for introsets (#1331)
* update loki-mq submodule for tuple support

* srv record reply implementation

still need to encode srv records into intro sets / router contacts
as well as decode from them and match against queried service.proto

* inverted condition fix in config code

* SRV record struct (de-)serialization for intro sets

* parsing and using srv records from config (for/in introsets)

* adopt str utils from core and use for srv parsing

* changes to repeat requests

no longer drop repeat requests on the floor, but do not make
an *actual* request for them if one is in progress.

do not call reply hook for each reply for a request, as
each userland request is actually made into several lokinet
requests and this would result in duplicate replies.

* fetch SRVs from introsets for .loki

* make format

* dns and srv fixes, srv appears to be working
2020-08-31 16:07:17 -04:00
jeff
39f5e7213f set send timeout to 5 seconds for exits 2020-08-25 19:00:05 +00:00
jeff
b0bb0b7609
initial route poking 2020-08-24 20:21:55 -04:00
Jeff Becker
80919a3b76
address feedback.
* use exceptions when fetching identity key instead of std::optional, will throw on fail
* fix up config options for endpoint auth and add better docs
* add llarp::serive::AuthType enum for controlling what kind of endpoint auth to use
2020-07-02 11:13:31 -04:00
Jeff Becker
0f21eeccb0
* rework exit codepath to allow multiple exits
* rework net code for ip ranges to be cleaner
* clean up endpoint auth code
* refactor config to validate network configs before setting up endpoints
* remove buildone from path/pathbuilder.cpp so we don't spam connection attempts
2020-07-02 11:13:30 -04:00
Jeff Becker
5abf111159
endpoint auth whitelist 2020-07-02 11:07:33 -04:00
Jeff Becker
a42d3d51c3
more 2020-07-02 11:07:33 -04:00
Jeff Becker
1899debfb5
unfug transit hops 2020-06-05 11:40:18 -04:00
Jeff Becker
6af498092b
exit traffic via loki addresses 2020-05-23 16:07:19 -04:00
Jason Rhinelander
d05e6716cb Remove llarp::str(string_view)
It was a workaround for pre-C++17 std::string which didn't support
passing a string_view to various functions/operators.  There's only one
place left that needs an explicit conversion, and that's where it is
used as a map key; so just be explicit there and remove llarp::str()
everywhere else.
2020-05-21 17:05:30 -03:00
Jason Rhinelander
3bb24580a4 make format 2020-05-20 19:48:13 -03:00
Jason Rhinelander
bdc9c7bfa8 Move IPRange out of net.hpp; free up TruncateV6 etc.
- Move IPRange into its own net/ip_range.hpp

- Move the static net::IPPacket::TruncateV6, etc. functions to free
net::TruncateV6, etc. functions (now from net/ip.hpp instead of
net/ip_packet.hpp).

- Make net::TruncateV6 and net::ExpandV4 constexpr.

- Add IPRange::FromIPv4 factory function (to replace the iprange_ipv4
free function)
2020-05-20 19:18:27 -03:00
Stephen Shelton
aee96e53a3
Refactor Addr -> IpAddress/SockAddr 2020-05-06 14:38:44 -06:00
Jeff Becker
e33a1a2e0f
proper autodetect of ifname and ifaddr 2020-05-04 12:51:57 -04:00
Stephen Shelton
15918ff1c9
log-- 2020-05-04 11:07:21 -04:00
Stephen Shelton
960dc37c1f
Refactor TunEndpoint::Configure() (partially) 2020-05-04 11:07:21 -04:00
Stephen Shelton
f2a26adcaa
Move all [endpoint] options to [network] 2020-05-04 11:07:21 -04:00
Stephen Shelton
dd9ab0f1d5
Remove ability to have multiple endpoints/snodes from config 2020-05-04 11:07:21 -04:00
Stephen Shelton
df01770466
Rename SnappConfig -> EndpointConfig 2020-05-04 11:05:51 -04:00
Stephen Shelton
93b35c92a7
Eradicate service::Config 2020-05-04 11:05:51 -04:00
Stephen Shelton
273270916e
The Great Wall of Blame
This commit reflects changes to clang-format rules. Unfortunately,
these rule changes create a massive change to the codebase, which
causes an apparent rewrite of git history.

Git blame's --ignore-rev flag can be used to ignore this commit when
attempting to `git blame` some code.
2020-04-07 12:38:56 -06:00
Jeff Becker
67883aa945
when we have an inbound session and we do a forward dns lookup
we should not look up the descriptor on the network as we
already have a session with them
2020-03-28 16:26:16 -04:00
Jeff Becker
4452b152aa
add an A Record for random.snode so that it works 2020-03-12 08:19:37 -04:00
Jeff Becker
51516f751b return NS record for localhost.loki to squash errors in host lookups 2020-03-09 17:48:13 -03:00
Jason Rhinelander
6715b86d51 Fix IPv6 lookups to return empty response
The logic here wasn't quite right and was returning an A record in
response to an AAAA lookup.

This returns nothing, which is better, but not quite enough: this gives
empty responses, which produces warnings in host/dig.
2020-03-09 17:48:13 -03:00
Jeff
f3d23d6fb6
strip rr from dns reply for .snode and .loki (#1172)
fix dns replies so that extra RR for edns are not included.
2020-03-09 17:47:27 -03:00
Rick V
9b0ec0935a
bump for next release 2020-03-05 12:47:47 -06:00
Rick V
8e9842f4b2
bindaddr a common field on the machine-independent side 2020-03-05 12:47:46 -06:00
Rick V
b4d6f89452
try extracting dns bind addr from INI on windows 2020-03-05 12:47:45 -06:00
Jason Rhinelander
c0eb0c4db4 Avoid unnecessary copy 2020-03-01 13:56:04 -04:00
Jeff Becker
d50a0149f9
use std::chrono 2020-02-25 17:46:16 -05:00
Jeff Becker
9c30ff7a26
handle snode and clean up codepath for hooked dns 2020-02-25 17:43:08 -05:00
Jeff Becker
1d5c712adb
monkey patch upstream dns to rewrite .loki cname answers 2020-02-25 17:43:08 -05:00
Jeff
a8a6c175fc
Merge pull request #1128 from majestrate/use-std-chrono-2020-02-24
make llarp_time_t use std::chrono::milliseconds
2020-02-25 15:36:00 -05:00
Jeff Becker
bf0416cab8
remove Time_t, add operator overload for printing llarp_time_t and add to_json function for serializing llarp_time_t to json 2020-02-25 12:05:13 -05:00
Jason Rhinelander
3bd400f6fe Fix string_view C++17 compatibility
string_view was implicitly convertible to std::string, but
std::string_view is only explicitly convertible.  This makes the
`operator std::string` explicit to be more compatible, and re-adds a
bunch of explicit string casts to the code where needed.

(This also fixes the build if changing the standard to c++17)
2020-02-25 11:52:43 -04:00
Jeff Becker
d2d109e92c
llarp_time_t is now using std::chrono 2020-02-24 15:25:03 -05:00
Jason Rhinelander
46242ba69b TrimWhiteSpace -> TrimWhitespace
Fix my dumb initial capitalization choice.
2020-02-24 14:27:44 -04:00
Jason Rhinelander
54186c4a89 Replace absl string_view with string_view from lokimq
When we add loki-mq has a dependency we can just alias it, but for now
it's easier to copy the header than add the whole submodule library.
2020-02-24 14:27:44 -04:00
Jason Rhinelander
98c34d995b De-abseil: Add our own llarp::TrimWhiteSpace
Adds a TrimWhiteSpace instead of using abseil's.

Adds Catch2 tests for it, and also converts the existing str tests to
catch (which look much, much nicer than the gtest ones).
2020-02-24 14:27:44 -04:00
Jeff Becker
6c67cc1f01
make default endpoint non reachable by default 2020-02-12 09:54:59 -05:00
Jeff Becker
70eb353c42
make publishing introsets optional using reachable=false to disable 2020-02-11 16:48:36 -05:00
Jeff Becker
ee752c00e6
make format 2020-02-01 10:28:10 -05:00
Jeff Becker
c014d21f84
use std::shared_ptr not a bare pointer to prevent memleak 2020-02-01 09:31:53 -05:00
Jeff Becker
79c3c748e4
limit number of snode sessions client side 2019-12-30 05:19:03 -05:00
Jeff Becker
92bbda600b
remove callsto Router::PumpLL and stuff gets faster (or stuff) 2019-12-09 16:59:13 -05:00
Jeff Becker
0c5c1aab1b
remove unneeded log statement 2019-12-04 08:06:16 -05:00
Jeff Becker
a2fc35a7aa lower limit to 25ms 2019-11-29 19:11:14 -04:00
Jeff Becker
5924a2cec0 limit calls 2019-11-29 19:11:14 -04:00
Jeff Becker
0828307906 fix address mapping bug 2019-11-29 19:11:14 -04:00
Jeff Becker
5188873288 batch and flush 2019-11-29 19:11:14 -04:00
Jason Rhinelander
d13a3d2b62 Don't flush here; we already have a tick flushing 2019-11-29 19:11:14 -04:00
Jeff Becker
ba0fd223d9 reduce number of jobs we put onto the logic thread 2019-11-29 18:45:06 -04:00
Jeff Becker
6f95fbfece
work in progress 2019-11-22 16:23:20 -05:00
Jeff Becker
56dce90de9
add trace log level for tracking logic thread jobs 2019-11-22 16:23:19 -05:00
jeff
52757fef0e Merge remote-tracking branch 'micheal/background_mode' into vpn-api-2019-10-03 2019-10-04 14:10:58 -04:00
Jeff Becker
327c545530
finish multithread cryptography first pass 2019-09-16 12:12:05 -04:00
jeff
14c9ef15ed try calling stuff in logic thread from event loop 2019-09-16 06:21:12 -04:00
Jeff Becker
61ade40a51
reduce logging and make format 2019-09-09 07:36:21 -04:00
Jeff Becker
e3bb59707e
more 2019-09-05 17:28:50 -04:00
Jeff Becker
1adae338ce
Merge remote-tracking branch 'origin/master' 2019-09-04 07:58:02 -04:00
Michael
edd0ec398f
Move thread stuff to subdirectory 2019-09-03 20:52:28 +01:00
Michael
4d8fe2a8a8
Move meta programming to subdirectory 2019-09-03 20:52:28 +01:00
Jeff Becker
c01112e4b7
tracy lock contention testing and other fun things 2019-09-03 11:56:56 -04:00
Michael
094b697b01
Replace StatusObject with underlying JSON type 2019-08-19 10:33:26 +01:00
Michael
16cdfbd5f0
clang-tidy modernize pass 2019-08-12 16:52:58 +01:00
Michael
f9e9227e19
Fix gcc trunk warnings 2019-08-02 10:29:08 +01:00
Jeff Becker
8329aa0ee6
always rewrite address 2019-08-01 14:18:36 -04:00
Jeff Becker
2261885206
mark addresses as active when we use them 2019-08-01 08:20:51 -04:00
Jeff Becker
f48754c45d
make hop count and length configurable 2019-07-18 12:28:17 -04:00
Michael
e52492911d
Refactor endpoint state management to a new class 2019-07-15 10:15:51 +01:00
Jeff Becker
6882e627ba
make format 2019-07-12 10:07:12 -04:00
Jeff Becker
3ed8dec78b
use const reference and don't log invalid packets 2019-07-09 15:17:27 -04:00
Jeff Becker
0eb6431eb1
initialize tun with 0 and set defaults in correct places 2019-07-08 11:26:06 -04:00
Jeff Becker
a781589b52
try fix for localhost.loki 2019-07-05 10:41:26 -04:00
Jeff Becker
d6ec528a72
start work on seperating ips out of endpoint 2019-07-01 10:56:56 -04:00
Jeff Becker
64e9622270
start seperating tun and endpoint 2019-07-01 09:44:25 -04:00
Jeff Becker
c60099002b
reverse dns for ipv6 2019-06-12 09:48:14 -04:00
Jeff Becker
ec3ddfa425
typofixes 2019-06-11 18:29:45 -04:00
Jeff
8407c20b91
Merge branch 'ipv6-tun' into ipv6-tun 2019-06-11 17:46:47 -04:00
cathugger
72b1ea613c
make format 2019-06-12 00:28:55 +03:00
cathugger
a9dac85c28
fix stuff 2019-06-12 00:27:06 +03:00
Jeff Becker
a780789b2c
handle ipv6 exit traffic 2019-06-11 15:48:21 -04:00
Jeff Becker
0cf09d6435
make exits support v6 probably 2019-06-11 15:42:11 -04:00
Jeff Becker
de51ef23bf
more 2019-06-11 14:23:53 -04:00
Jeff Becker
2403ab8f86
ipv6 2019-06-11 12:44:05 -04:00
Jeff Becker
a33dbce680
try switching logic 2019-06-06 06:52:27 -04:00
Michael
75430a234c
Convert to use memFn 2019-06-02 22:19:10 +01:00
Jeff Becker
2ac89c0afb
DRY 2019-05-23 08:22:48 -04:00
Jeff Becker
b679dd7341
fixit 2019-05-22 13:38:02 -04:00
Jeff Becker
64c7ed42fc
make format 2019-05-22 12:20:50 -04:00
Jeff Becker
9c96aecf3f
move llarp::Logic to std::shared_ptr
add sequence numbers to HSD messages

begin work on network isolation code

add more docs
2019-05-22 12:20:03 -04:00
Jeff
06f8bb2f42 add blacklist-snode option 2019-05-10 12:19:33 -04:00
Jeff Becker
a53da68700
start work on sighup 2019-05-07 13:46:38 -04:00
Jeff Becker
728c6005a3
propagate strict-connect to tun handler for hooks 2019-05-06 08:42:21 -04:00
Jeff Becker
986e831579
make bundle-rc option configurable on snode tld 2019-05-02 14:11:44 -04:00
Jeff Becker
e060082441
hook every dns for .loki and .snode when applicable
make {n,h}uint{32,16}_t templated type.
2019-05-01 09:40:10 -04:00
Jeff Becker
bb47d612b3
more 2019-04-30 12:07:17 -04:00
Jeff Becker
5e0acc1197
separate upstream/downstream flush 2019-04-30 09:56:39 -04:00
Jeff
27fac68716 fix 2019-04-28 14:22:38 -04:00
Jeff
01906c5d94 Merge remote-tracking branch 'origin/master' 2019-04-28 13:33:27 -04:00
Jeff Becker
fea64eaf12
handle subdomains 2019-04-26 08:14:29 -04:00
Jeff Becker
d20ba9ceab
handle subdomains 2019-04-26 08:11:34 -04:00
Jeff Becker
6711296b26
finish converting to shared_ptr 2019-04-23 12:13:22 -04:00
Jeff Becker
8484e29c9b
turn more stuff into std::shared_ptr
remove dead codepaths
2019-04-23 10:47:23 -04:00
Jeff Becker
c0d7b53328
make it work 2019-04-22 10:00:59 -04:00
Jeff Becker
3a8cb0bfb5
add shell based hooks for service::Endpoint, also make format 2019-04-22 08:25:25 -04:00
Michael
6bf54e0925
Remove AsyncKeyExchange, HiddenServiceAddressLookup and OutboundContext to their own components 2019-04-21 19:39:50 +01:00
Jeff Becker
351feadaec
make it work 2019-04-11 09:19:58 -04:00
Jeff Becker
e178a70929
use shared_ptr for event loop 2019-04-08 08:01:52 -04:00
Jeff Becker
2f2b841c67
disable mx record dropping
add servfail
2019-04-05 12:39:43 -04:00
Jeff Becker
c931ac069f
add AAAA records that return SIIT addresses 2019-03-27 09:36:11 -04:00
Jeff Becker
567efb9a92
Revert "move is_random_snode/is_localhost_loki into dns, llarp_HandleHookedDNSMessage() attempt at unification refactor between exit/tun handlers"
This reverts commit e388dc47eb.
2019-03-20 11:48:23 -04:00
Ryan Tharp
e388dc47eb move is_random_snode/is_localhost_loki into dns, llarp_HandleHookedDNSMessage() attempt at unification refactor between exit/tun handlers 2019-03-20 03:28:58 +00:00
Ryan Tharp
d02eec2bcf add note 2019-03-20 03:18:38 +00:00
Jeff Becker
eceb55623c
more 2019-03-07 10:17:29 -05:00
Jeff Becker
159415c363
delay dns resolution for snode until we have a session with it 2019-03-01 14:10:42 -05:00
Michael
048fa83c39
Finish replacement of Router with AbstractRouter 2019-02-14 22:31:31 +00:00
Jeff Becker
46222df421
refactor 2019-02-11 12:14:43 -05:00
Jeff Becker
e1522faeaa
add introspection rpc endpoint 2019-02-08 14:43:25 -05:00
Jeff Becker
f84256d554
* lower lookup timeout for introsets
* correct previous commit for dns stuff
* allow for multiple parallel introset lookups
2019-02-06 10:05:25 -05:00
Jeff Becker
b40055181d
lower path build timeout to 15s
tweak various dns stuff
2019-02-06 08:02:17 -05:00
Jeff Becker
5743ca7fba
revert dns behavior 2019-02-05 16:04:30 -05:00
Jeff Becker
2c2b31f4b9
make it compile 2019-02-05 09:23:51 -05:00
Jeff Becker
25fa4817ba
hook mx records for all hooked domains 2019-02-05 09:22:02 -05:00
Jeff Becker
41c993a237
disable A records for random.snode, use CNAME queries instead. 2019-02-05 09:08:17 -05:00
Jeff Becker
8c77c53675
reply with cname 2019-02-05 09:03:38 -05:00
Ryan Tharp
2bba8f01e8 don't return unknown IPs 2019-02-04 19:54:44 -08:00
Ryan Tharp
54549724d0 fix random.snode 2019-02-04 19:19:06 -08:00
Michael
7212baa062
Add implicit conversion from ManagedBuffer to llarp_buffer_t 2019-02-03 01:44:09 +00:00
Michael
7ca3e13e78
Rename to ManagedBuffer 2019-02-03 00:48:10 +00:00
Michael
f3b0af9d2f
Create CopyableBuffer type 2019-02-02 23:21:35 +00:00
Michael
2de621b0ad
Disable copy constructing llarp_buffer_t 2019-02-01 01:58:13 +00:00
Ryan Tharp
175fdbc89c
Merge pull request #250 from majestrate/add-localhost-loki
add initial localhost.loki handling in dns
2019-01-29 13:57:56 -08:00
Ryan Tharp
9b6008db1d downgrade DNS server failure to a warning 2019-01-29 03:17:21 -08:00
Jeff Becker
9e50e2d34a
try fixing AAAA record handling, return NOERROR with no records. 2019-01-28 11:16:17 -05:00
Jeff Becker
7489ab1380
only hook cname for random.snode 2019-01-28 10:46:49 -05:00
Jeff Becker
f1cf63fce7
add initial localhost.loki handling in dns 2019-01-28 10:26:35 -05:00
Rick V
b961f80256
don't leak unused packets
bad merge
2019-01-22 18:21:38 -06:00
Rick V
6913c01524
wtf why didn't this get rebased 2019-01-22 18:17:04 -06:00
Rick V
fab9374779
make less noise in public test releases 2019-01-22 18:17:00 -06:00