Commit Graph

414 Commits (8b321612da4e129b8eee4e02af755184d2405fe9)

Author SHA1 Message Date
Jeff Becker dde6bbeeb8
fix for windows as it is cursed 4 years ago
Jeff Becker 88de4c6f91
windows fixes 4 years ago
Jeff Becker 65b9b55335
fixes for windows 4 years ago
Jeff Becker 7e562a5b37
add netmask for macos 4 years ago
Jeff Becker 49eb42d63f
formatting and typo fix 4 years ago
Jeff Becker 9e24a5bfca
add check for no default route on down
fix macos bits for down
install lokinet-vpn with cmake
4 years ago
Jeff Becker c49e11031a
fix variable name 4 years ago
Jeff Becker 778792f8fc
fix compile error on macos and exclude excluded interface 4 years ago
Jeff Becker c2e484d14b
fix apple build 4 years ago
Jeff Becker 847fdb4f6b
add initial macos bits for lokinet-vpn (apple made macos so that man may suffer) 4 years ago
Jeff Becker 34ffd8e869
dont put the "gateway" into the return value use the interface address instead because that is what we are looking for 4 years ago
Jeff Becker 45b6fcd7cb
forgot hunk 4 years ago
Jeff Becker 04392a5115
tweak windows bits so that they compile 4 years ago
Jeff Becker 36a2bc5d66
add forgotten array header 4 years ago
Jeff Becker 22e4aef4f9
initial windows platform specific bits for lokinet-vpn 4 years ago
Jeff Becker 37e16291cb
working on linux with root 4 years ago
Jeff Becker a8239af73a
initial lokinet-vpn tool rewrite 4 years ago
Rick V 98241c6c1a this is what c-f v10 thinks it should look like 4 years ago
Rick V 59b8b1ba6d add service description 4 years ago
Rick V 7de4c509d7 haha lokinet is cursed now 4 years ago
Rick V 7bd3731e98 first draft of daemon control code 4 years ago
Rick V d56706b626 more daemon fluff 4 years ago
Rick V 8c62a726c0 stupid trampoline to return control to lokinet
after SCM starts
4 years ago
Rick V ca9984cc69 win32 daemon install/remove goo 4 years ago
Stephen Shelton 0f074cff8c
Remove ambguity WRT loading and passing of Config 4 years ago
Stephen Shelton ec20d94c6b
Fix Context::Configure() 4 years ago
Stephen Shelton ed47ba998f
Minor fixes around Context 4 years ago
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
4 years ago
Jeff Becker 3cdca30a74
more auth shit 4 years ago
Stephen Shelton 0aa43c6b07
Pass RuntimeOptions instead of 'bool isRelay' 4 years ago
Stephen Shelton 984015587d
"Rethrow" to promise using std::current_exception() 4 years ago
Stephen Shelton a448cbab4f
Pass on exceptions to exit_code future in main 4 years ago
Stephen Shelton eb2260179f
Pass opts by value since we're crossing threads 4 years ago
Stephen Shelton ec4109ae60
Handle signals without C API 4 years ago
Stephen Shelton b5d6a73ffd
Rip out most of C API 4 years ago
Stephen Shelton 1497b829bd
Ignore our self.signed file if we're a client 4 years ago
Jeff 45cda241f0
Merge pull request #1272 from majestrate/exit-nodes-2020-05-16
exit traffic via snapps
4 years ago
Jeff Becker 18b2ef3d1e
remove unneeded file 4 years ago
Jeff Becker 242ab3caba
rename lokinet-exit too to lokinet-vpn
install lokinet-vpn tool for use with debian packaging
4 years ago
Rick V 5529371637 RouterContact::[Read|Write] now take a fs::path const ref 4 years ago
Rick V f62214cf8c
first pass fix wstring path conversions 4 years ago
Jeff Becker 14b134c42d
when we get an explicit config path respect it and the base dir 4 years ago
Jeff Becker 6af498092b
exit traffic via loki addresses 4 years ago
Jason Rhinelander c5faa86926 cmake refactor
Refactors many things in cmake to improve and simplify:

- don't use variable indirection for target names; target names are
*already* a variable of sorts.  (e.g. ${UTIL_LIB} is now just
lokinet-util).  cmake/basic_definitions.cmake is now gone.

- fix LTO enabling to use the standard cmake (3.9+) LTO mechanism rather
than shoving a bunch of flag hacks through link_libraries and
add_compile_options.  This also now enables LTO when building a shared
library (because previously the -flto hacks were only turned on in the
static code for some reason).

- build liblokinet as *either* shared library or static library, but not
both.  Building both makes things more complicated because they had
different names (lokinet-shared or lokinet-static) and seems pointless:
you generally want one or the other.  Now there is just the liblokinet
target, which will be shared or static depending on the value of
BUILD_SHARED_LIBS.

- Simplify lokinet-cryptography AVX2 code: just build *one* library, and
add in the additional AVX2 files when possible, rather than building two
and needing to merge them.

- Compress STATIC_LINK and STATIC_LINK_RUNTIME into just STATIC_LINK.
It makes no sense to use one of these (_RUNTIME) on Windows and the
other on non-Windows when they appear to try to do the same thing.

- remove a bunch of annotations from `endif(FOO)` -> `endif()`.

- move all the tuntap compilation code (including OS-specific source
file selection) into vendor/CMakeLists.txt and build tuntap as an
intermediate OBJECT library rather than keeping a global variable in 5
different files.

- move release motto define to root cmake; it made no sense being
duplicated in both unix.cmake and win32.cmake

- fix add_log_tag to not stomp on any existing source compile flags with
its definition.  Also use proper compile definition property instead of
cramming it into compile flags.

- make optimization/linker flags less hacky.  There's no reason for us
to force particular optimization flags because the cmake build type
already does that (e.g. -DCMAKE_BUILD_TYPE=Release does -O3).  Not doing
that also silences a bunch of cmake warnings because it thinks "-O0 -g3"
etc.  are link libraries (which is reasonable: that's what the code was
telling cmake they are).

- sets the default build type to RelWithDebInfo which gives us `-O2 -g`
if you don't specify a build type.

- Move PIC up (so that the things loaded in unix.cmake, notably libuv,
have it set).

- Add a custom `curl` interface library that carries the correct link
target and include paths for curl (system or bundled).
4 years ago
Stephen Shelton de8e44ba21
Re-apply clang-format rules after rebasing 4 years ago
Stephen Shelton 6909e20588
Fix logging initialization and flush at program exit 4 years ago
Stephen Shelton e3cb4b2d60
Don't create conf dir in main()
ensureConfig() does this implicitly.
4 years ago
Stephen Shelton 1fc7c61d1f
Share common conf comments for client and relay 4 years ago
Stephen Shelton 176c1e3cbd
Remove --router option 4 years ago
Stephen Shelton 05257126fe
Make distinction between config dir and data dir 4 years ago
Stephen Shelton 9e7254f6fa
Rip out pass-through-to-curl functionality 4 years ago
Stephen Shelton 923e73f693
Plumb isRelay CLI arg through to config 4 years ago
Stephen Shelton 1653b73ee5
Clean up the logic around generating default confs 4 years ago
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.
4 years ago
Jeff Becker 9428689939
fix up cpack for macos 4 years ago
Jeff Becker 2922668e6b
initial lokinet-bootstrap in powershell for windows 4 years ago
Jeff Becker 2190da8c81
cpack win32 4 years ago
Rick V db0920d921
use backport fork for release installer only
move all invariant assets to common repo

remove ded code, libuv patches can be swapped in at build time for debug/release builds
4 years ago
Stephen Shelton 182057e881
Remove 'clang-format off' and make format 4 years ago
Jason Rhinelander b4440094b0 De-abseil, part 2: mutex, locks, (most) time
- util::Mutex is now a std::shared_timed_mutex, which is capable of
  exclusive and shared locks.

- util::Lock is still present as a std::lock_guard<util::Mutex>.

- the locking annotations are preserved, but updated to the latest
  supported by clang rather than using abseil's older/deprecated ones.

- ACQUIRE_LOCK macro is gone since we don't pass mutexes by pointer into
  locks anymore (WTF abseil).

- ReleasableLock is gone.  Instead there are now some llarp::util helper
  methods to obtain unique and/or shared locks:
    - `auto lock = util::unique_lock(mutex);` gets an RAII-but-also
      unlockable object (std::unique_lock<T>, with T inferred from
      `mutex`).
    - `auto lock = util::shared_lock(mutex);` gets an RAII shared (i.e.
      "reader") lock of the mutex.
    - `auto lock = util::unique_locks(mutex1, mutex2, mutex3);` can be
      used to atomically lock multiple mutexes at once (returning a
      tuple of the locks).
  This are templated on the mutex which makes them a bit more flexible
  than using a concrete type: they can be used for any type of lockable
  mutex, not only util::Mutex.  (Some of the code here uses them for
  getting locks around a std::mutex).  Until C++17, using the RAII types
  is painfully verbose:

  ```C++
  // pre-C++17 - needing to figure out the mutex type here is annoying:
  std::unique_lock<util::Mutex> lock(mutex);
  // pre-C++17 and even more verbose (but at least the type isn't needed):
  std::unique_lock<decltype(mutex)> lock(mutex);
  // our compromise:
  auto lock = util::unique_lock(mutex);
  // C++17:
  std::unique_lock lock(mutex);
  ```

  All of these functions will also warn (under gcc or clang) if you
  discard the return value.  You can also do fancy things like
  `auto l = util::unique_lock(mutex, std::adopt_lock)` (which lets a
  lock take over an already-locked mutex).

- metrics code is gone, which also removes a big pile of code that was
  only used by metrics:
  - llarp::util::Scheduler
  - llarp:🧵:TimerQueue
  - llarp::util::Stopwatch
4 years ago
Jeff Becker 0f13591802
does not work 4 years ago
Ryan Tharp cd8aba4d4e daemon don't override the existing CURL 5 years ago
Rick V fd6602bf05
fix versiontag 5 years ago
Rick V 9fa9209114
don't be aggressive
remove libcurl packaging rules. We still build it, but ship only the curl.exe
5 years ago
Rick V 6d49ffd60b
include all platform dependencies transitively 5 years ago
Rick V e15c57c114
get ready for v0.6
bump version

don't ship the shared object
5 years ago
Jason Rhinelander 638fb25b47 Put version info into a compiled file
This rewrites the version info using lokid's approach of compiling it
into a .cpp file that gets generated as part of the build (*not* during
the configure stage).

Among other things, this means that changing the version no longer
invalidates ccache or cmake dependencies, and because it depends on
`.git/index` git commits will cause the version to be regenerated,
making the commit tag more reliable (currently if you rebuild without
running cmake your git commit tag doesn't update).
5 years ago
Jeff Becker cec36b62b5 make logic and net thread one in the same 5 years ago
Jeff Becker 70771a2460
fix last commit 5 years ago
Jeff Becker f56e543d75
add deadlock checker and revert bencode change from long ago 5 years ago
Rick V cf3469e11a
crash on wine, we support linux, ucb_unix, svr4
natively ffs. i tested this patch on wine 4.4 on fuckin
Solaris 11 snv_151
5 years ago
Jason Rhinelander f54740fa85 Don't pointlessly set conffname back to itself 5 years ago
Jason Rhinelander e0340e86b2 clang-format fixes 5 years ago
Jason Rhinelander 2bdde18558 Remove shell globbing of path
resolvePath was leaking memory (the returned char * from realpath was
never freed), but upon closer inspection resolvePath doesn't seem right:
shell/glob/~ expansion is the job of the shell, not the argument (but
worse, if you pass it something like '~' (quoted) it would expand, which
is wrong.

Also de-duplicate some code.
5 years ago
Rick V 83c5e9ace4
manually merge #859 5 years ago
jeff 869ab0b652 Merge remote-tracking branch 'upstream/dev' into vpn-api-2019-10-03 5 years ago
Michael f6adacf936
Review fixes 5 years ago
Michael 3371da98cf
Use libcurl (optional dependency) to hit jsonrpc 5 years ago
jeff c26b67c379 finish wiring up jni shizz 5 years ago
jeff 7d7c6bf38c Merge remote-tracking branch 'upstream/dev' into multithreaded-cryptography 5 years ago
michael-loki 4b6dab5651
Fixup 5 years ago
Michael abc527ca35
Split cmake files for executables into src dirs 5 years ago
jeff 52757fef0e Merge remote-tracking branch 'micheal/background_mode' into vpn-api-2019-10-03 5 years ago
Michael 15cb49c9bd
Introduce --background to only start JSON RPC
fixes #853
5 years ago
Stephen Shelton c9b862a12b Add a --version flag to lokinet CLI args 5 years ago
jeff 32ed821763 Merge remote-tracking branch 'upstream/dev' into multithreaded-cryptography 5 years ago
Michael ae3fc3a395
Add initial macOS app 5 years ago
Jeff Becker 12314e8d00
ensure no crash on quit 5 years ago
Michael 1aec0dfa2b
Move logging to subdirectory 5 years ago
Michael c98ae332b2
Add missing header 5 years ago
Michael 0a1620aff2
make format 5 years ago
Michael de21a2f687
Include json output 5 years ago
Michael 8c5bbcaeeb
Update rcutil and add to build 5 years ago
Rick V f6c97091fd
clang-format 5 years ago
Rick V 581e64a2ef
back out for now 5 years ago
Rick V 578bcba73d
ok use exception filter
typo

no infinite loops
5 years ago
Rick V 16096c6adb
add debug helper lib for core dump generation on all supported windows targets
had an epiphany earlier

i kept having problems with static linking because
i merged the GNU C runtime with the SEH library
instead of merging the latter with pthread
5 years ago
Jeff Becker c1bf69f96f
run main in it's own thread and set its process name. 5 years ago
Michael a2326efa37
Revert "Merge pull request #679 from tewinget/revert-config-refactor"
This reverts commit 2996a7f29c, reversing
changes made to 10df3bd4b3.
5 years ago
Thomas Winget d044d60101 Reverts #678 #677 and #669 with hashes:
10df3bd
766ece8
979f095

See those commits for further details
5 years ago
Michael 00c237dc6d
Move config class to its own dir 5 years ago
Michael 8323725509
Initial No-Op Crypto implementation 5 years ago
Ryan Tharp 124e9dc4bf
Merge pull request #556 from neuroscr/issue547-2
handle relative config paths better
5 years ago
Ryan Tharp 89837d5528 handle relative config paths better 5 years ago
Ryan Tharp 4f70c729c0
Merge pull request #554 from neuroscr/issue547-2
fix generate router config
5 years ago
Ryan Tharp ecec0628f0 fix generate router config 5 years ago
Ryan Tharp db25a9107c format / fix syntax error 5 years ago
Ryan Tharp f9d20fe75b
Merge branch 'master' into cooler_help 5 years ago
Ryan Tharp b36b378583 issue 547 make format 5 years ago
Ryan Tharp 8cf6a77c1d address issue loki-project#547, remove client.ini, update ini defaults, and clean up help message 5 years ago
Michael 5589d9b471
Make help more useful 5 years ago
Rick V afdb6cf2f3
windows is the oddball yet again 5 years ago
Jeff Becker 73a71e43c3
vec -> arg 5 years ago
Jeff Becker 0a990fbdff
fix positional arguments in main 5 years ago
michael-loki 0195152e05 Allow builds on MSVC (#518)
* Import cxxopts to replace getopts usage

* Add visual studio build things

* Fixup abseil build parts

* Replace __attribute__((unused)) with ABSL_ATTRIBUTE_UNUSED

* Fixup minor windows build issues

* Replace getopts usage

* Temporarily fixup .rc files

* More minor windows fixes

* Get a working build

* Revert .rc files

* Revert changes to nodedb
5 years ago
Michael 57d6668e55
Move metrics out of daemon into llarp::Context 5 years ago
Rick V 1fb3a0bf62
stderr is unbuffered by default? 5 years ago
Michael 91f401ff71
Integrate metrics into router 5 years ago
Michael c5a129ddff
Convert to use abseil synchronisation primitives 5 years ago
Michael 67b5d48095
Replace usage of new/delete with unique_ptr/stack allocation 5 years ago
Rick V 3931b7d9d7
implement missing libabyss functionality
remove some finished TODOs
5 years ago
Rick V ad1179a333
remove ref to nrmicro
add note
5 years ago
Rick V 8741f0dd59
NetBSDs don't fully implement POSIX.1-2001 (!!!) 5 years ago
Rick V f277f368a1
win32 g++ is set to c++17 by default, so we use the _real_ string_view class 5 years ago
Ryan Tharp befcdc179e address #251 and improve UX 5 years ago
Ryan Tharp 1ba5b75082 Merge branch 'master' of https://github.com/neuroscr/loki-network 5 years ago
Ryan Tharp a2ca33130f always show what config file it's using 5 years ago
Michael 04e0fe3ad7
Move crypto code to a subdirectory 5 years ago
Michael b1ffdba7ba
Build with libabyss 5 years ago
Michael e5eda0fb8f
Move lokinet unspecific components to a util/ library 5 years ago
Michael 4f90192e1a
Fix lifetime issues in llarp_findOrCreate* function calls 5 years ago
Jeff 4b2a1ea9f3 make format and attempt to fix #158 6 years ago
despair 321251c944
implemented SIGINT handler for NT 6 years ago
Jeff Becker be234e4b6e
* make format
* snode to snode direct traffic

* wire up dns on service node tun
6 years ago
Michael 85dde7b6b0
Move remaining include/llarp headers to llarp/ 6 years ago
Michael b92ea0521b
Move router_contact.hpp to llarp/ 6 years ago
Michael a5c3ba0fdd
Move logger.hpp to llarp/ 6 years ago
Michael 7be452092c
Convert llarp_crypto to be a true C++ class 6 years ago
Michael f0fce5b68a
Convert llarp_router to be a true C++ class 6 years ago
Michael 30e9dca2e5
Convert llarp_logic to be a C++ class 6 years ago
Jeff Becker 0bfe9a5fee
fix 6 years ago
Jeff Becker 472948a610
more dns tweaks 6 years ago
Jeff Becker 90a2545bb1
handle SIGTERM 6 years ago
Ryan Tharp 1c6031c677 clang-format 6 years ago
Ryan Tharp 0046b705e8 generic_handle_dnsc_recvfrom() remove unneeded parameter, start making daemon/dns better, deprecate raw_handle_recvfrom() 6 years ago
Jeff Becker b543d6243d
Merge branch 'master' into dev 6 years ago
Michael 0b2ebc83e0
De-C-ify several .h headers 6 years ago
Jeff Becker 56676002aa
wire up exit traffic 6 years ago
Jeff Becker e91d7cf88f
Merge remote-tracking branch 'rick/dev' into dev 6 years ago
despair f6fb063684 this is driving me at least mildly insane
we _never_ get to llarp::udp_listener::read
6 years ago