Commit Graph

89 Commits

Author SHA1 Message Date
Logan oos Even
89571292f4
allowed supernode MAC address to be set manually (-m) (#886) 2021-11-01 17:19:46 +05:45
Hamish Coleman
ae502d9181
JSON Reply Management API - feature parity with old management interfaces (#861)
* Ensure that recent code additions pass the linter

* Include some of the more obviously correct lint fixes to edge_utils.c

* Refactor edge JSON api into its own source file

* Use shorter names for static management functions

* Implement a JSON RPC way of managing the verbosity

* Tidy up help display in n2nctl script

* Make note of issue with implementing the stop command

* Implement a JSON RPC call to fetch current community

* Make n2nhttpd time value be more self-contained

* Make n2nhttpd order more closely match the existing management stats output

* Wire up status page to the verbosity setting

* Add JSON versions of the remainder of the edge management stats

* Add new file to cmake

* Properly define management handler

* Only update the last updated timestamp after a successful data fetch

* Function and types definition cleanup

* Force correct type for python scripts mgmt port

* Implement initial JSON API for supernode

* Fix whitespace error

* Use helper function for rendering peers ip4 address

* Proxy the auth requirement back out to the http client, allowing normal http auth to be used

* Ensure that we do not leak the federation community

* Use the same rpc method name and output for both edge and supernode for peers/edges

* Allow n2nctl to show raw data returned without resorting to tricks

* Make n2nctl pretty printer understandable with an empty table

* Use the full name for supernodes RPC call

* Use same RPC method name (but some missing fields) for getting communities from both edge and supernode

* Add *_sup_broadcast stats to edge packet stats output

* Refacter the stats into a packetstats method for supernode RPC

* Even if I am not going to prettyprint the timestamps, at least make all the timestamps on the page the same unit

* Simplify the RPC handlers by flagging some as writable and checking that in the multiplexer

* Remove invalid edges data

* Avoid crash on bad data to verbose RPC

* Avoid showing bad or inconsistant protocol data in communities RPC

* Minor clarification on when --write is handled

* Make linter happy

* Fix changed method name in n2nhttpd

* Move mainloop stop flag into the n2n_edge_t structure, allowing access from management commands

* Implement edge RPC stop command

* Move mainloop stop flag into the n2n_sn_t structure, allowing access from management commands

* Implement supernode RPC stop command

* Allow multiple pages to be served from mini httpd

* Extract common script functions into a separate URL

* Handle an edge case in the python rpc class

With a proper tag-based demultiplexer, this case should be a nop,
but we are single-threaded and rely on the packet ordering in this
library.

* Add n2nhttpd support to query supernode using urls prefixed with /supernode/

* Handle missing values in javascript table print

* Add another less filtering javascript key/value renderer

* Add a supernode.html page to the n2nhttpd

* Address lint issue

* Mention the second html page on the Scripts doc

* Remove purgable column from supernode edges list - it looks like it is rarely going to be set

* Add a simple one-line example command at the top of the API documentation

* Acknowledge that this is not the most efficient protocol, but point out that it was not supposed to be

* Make it clear that the n2nctl script works for both edge and supernode

* Fight with inconsistant github runner results

* Turn off the /right/ coverage generator
2021-10-23 11:05:05 +05:45
Hamish Coleman
4438f1aa2a
added mingw test platform (#829)
* Provide a minimal reimplementation of our autoconf, to try windows builds

* Try building with windows

* Fix thinko in spelling

* Ensure shell script runs inside a shell

* Add a hack to aid include discovery

* Just keep adding tech debt...

* Assume that we will have slashes in some of the replacement strings and avoid that char with sed

* Restore one slash

* Hack around the tools makefile interdependancy bug

* A correct cflags include hack for each compile dir

* Ensure we link against winsock (note, even though this says 32bit, it should link the 64bit library ... I think)

* Bad link ordering if we dont use LDLIBS

* Remove unused make variable

* Remove makefile duplication using inheritance (this does mean you can no longer cd tools; make, but must do make tools)

* Add missing library for win32

* Show OS variable

* Make hack autoconf more robust for tests on non gitlab runners

* Remove no longer used substitutions from hack autoconf

* Add missing include path to tools under win32

* Build the win32 subdir when the compiler is Msys

* The different subdirs have different dependancies

* Ensure we can find the include files

* Fix library link ordering

* Ensure the tools dir can find the special win32 lib

* Deal with the differing basic type sizes on both linux/64bit and windows/64bit

* Document the steps to mimic the github windows/mingw build locally - to allow for simpler debugging

* Ensure branch name in instructions matches my test branch name

* Clarify the shell needed to build with mingw

* Since the makefile depends on knowing the OS, raise a fatal error if we cannot determine this

* Handling different compile environments is hard.

- Linux: sane and reasonable results for both uname -s (=Linux) and
  uname -o (=GNU/Linux)
- Windows/Mingw: insane results for uname -s
  (=MSYS_NT-$MAJOR.$MINOR-$BUILDNR) but sane results for uname -o (Msys)
- Macos: sane results for uname -s (=Darwin) but does not support
  uname -o at all

* Revamp the way that Mingw is detected

* Avoid attempting to generate gcovr report when running under windows

* Whoops, isolate the right step

* Fix spelling mistake

* win32/Makefile: Remove unused setting and add comment

* ensure that all win32 includes use the same expected path

* Allow simpler cross compilation by letting configure pass the CC and AR environment through

* Avoid multiple '_CRT_SECURE_NO_WARNINGS redefined' warnings

* Convert to a consolidated CONFIG_TARGET variable to select any different compile options

* Use the more generic printf defines to avoid warnings on mingw

* Update mingw build docs

* English better for reader happy make

* Address a number of mingw compiler warnings

* Fix Visual C compile

* Be sure to document some of the hacky nature of the mingw build
2021-10-06 00:52:15 +05:45
Logan oos Even
9c22d28562
relocated 'detect_local_ip_address()' (#791) 2021-09-16 12:20:35 +05:45
Hamish Coleman
6b353141b4
addressed warnings (#790) 2021-09-15 22:08:45 +05:45
Logan oos Even
b3bf36f867
separated 'detect_local_ip_address()' function (#781) 2021-09-13 11:33:27 +05:45
Logan oos Even
b6e865aac7
trimmed open_socket() down by one parameter (#768) 2021-09-06 17:03:15 +05:45
Logan oos Even
e13c9a01a5
rearranged thread-related code (#761) 2021-08-30 14:23:31 +05:45
Logan oos Even
c21accc2a1
enabled edge to bind to a specified IP address (-b) (#753) 2021-08-28 03:08:23 +05:45
Logan oos Even
a28327a0af
added user-password edge authentication (#673) 2021-06-04 03:11:22 +05:45
Logan oos Even
667b7df083
added memrnd() (#685) 2021-04-19 00:47:37 +05:45
Sven Roederer
23c18e349f
drop non portable SOL_TCP / fix MacOS v2 (#680)
* Revert "Fix compilation on MacOS"

in order to another solution

* src: use IPPROTO_TCP in place of SOL_TCP

* use the more specific IPPROTO_TCP type for setsockopt
* fixes build on MacOS

src/edge_utils.c:891:31: error: use of undeclared identifier 'SOL_TCP'; did you mean 'FPP_TCP'?
        setsockopt(eee->sock, SOL_TCP, TCP_NODELAY, &value, sizeof(value));

src/edge_utils.c:894:31: error: use of undeclared identifier 'SOL_TCP'
        setsockopt(eee->sock, SOL_TCP, TCP_CORK, &value, sizeof(value));
                              ^
src/edge_utils.c:894:40: error: use of undeclared identifier 'TCP_CORK'
        setsockopt(eee->sock, SOL_TCP, TCP_CORK, &value, sizeof(value));

* include/n2n.h: drop redefiniton of SOL_TCP for WIN32, as we don't use it anywhere now

* src: only use TCP_CORK on LINUX

* it's LINUX only and fails on Win32 and MacOS (man 7 tcp)
2021-04-05 19:30:53 +02:00
Alfredo Cardigliano
53e930db10 Fix compilation on MacOS 2021-03-29 09:28:13 +02:00
Logan oos Even
7c3951a10f
revised tcp implementation (#674) 2021-03-26 20:45:31 +05:45
Logan oos Even
a482fe112d
added TCP support (#627)
(disabled on Windows)
2021-02-22 22:37:47 +05:45
vtcpip
b42c111527
fix windows compile (#636) 2021-02-10 15:16:16 +05:45
Logan oos Even
ba9a32fb30
fixed minor timing issues (#616) 2021-01-31 21:12:08 +05:45
Logan oos Even
39a71513f4
reworked supernode help text (#605) 2021-01-28 00:07:11 +05:45
Logan oos Even
7eeca3d78f
cleaned up mac type usage (#583) 2021-01-13 14:50:26 +05:45
Francesco Carli
54f6da4cf4
Change space indention (#557)
* change space indention

* change space indention
2020-12-24 14:56:29 +01:00
Francesco Carli
646da54915
readability code clean-up (#545) 2020-12-19 12:28:45 +01:00
Logan oos Even
599e424b5d
Revert "changed timer source (#522)" (#536)
This reverts commit 0298efa36e.
2020-12-19 12:26:54 +01:00
Logan oos Even
0298efa36e
changed timer source (#522)
* changed timer source

* changed timer source

* changed timer source

* changed timer source

* changed timer source

* changed timer source
2020-12-08 15:46:00 +01:00
joshuafc
b3f564e58c
Traffic Restrictions, Pass Build on CircleCI and local Windows 10 VS2019 (#499)
* Add new file 'network_traffic_filter.c/.h"

* Add feature to drop or accept specific packet transmit over edge network interface by rules.

* fix CMakeLists.txt typo

* Update Rule String Format

* replace -F (filter) with -R (rule) for traffic restrictions.

* Update edge help (-h)  message. Update documents.

* Pass Build on CircleCI and local Windows 10 VS2019

* Fix cmake build failed because of sn_selection

* fix operate void* cause vs2016 build failed

* Fix typo to pass build on windows.

* add inttypes.h for n2n_typedefs.h to pass windows build

* modify headers to pass build on windows.
2020-11-16 21:27:42 +01:00
lucaderi
72d5243650 Include rework to avoid circular dependencies, single place for typedefs and compilation on all platforms that don't like type redefinition 2020-11-13 09:28:52 +01:00
Francesco Carli
8915609f1a
Implement a load-based supernode selection strategy on edges (#493)
* Implement load-based selection strategy

* Update n2n_wire.h

* Update edge_utils.c

* Update n2n.c

* Update sn_utils.c

* Update edge_utils.c
2020-11-11 09:27:39 +01:00
Luca Deri
f0be328261 Disabled filtering code 2020-11-10 23:47:55 +01:00
lucaderi
0a0888f1f2 More fixes 2020-11-10 18:10:20 +01:00
Luca Deri
6bd375efc4 Compilation fixes
Network filtering code has been temporarely commented out as it is broken
2020-11-10 17:58:35 +01:00
joshuafc
a840aebb83
Add feature to drop or accept specific packet transmit over edge network interface by rules. (#489)
* Add new file 'network_traffic_filter.c/.h"

* Add feature to drop or accept specific packet transmit over edge network interface by rules.

* fix CMakeLists.txt typo

* Update Rule String Format

* replace -F (filter) with -R (rule) for traffic restrictions.

* Update edge help (-h)  message. Update documents.
2020-11-10 16:35:05 +01:00
Francesco Carli
dcbc39c0fb
Update REGISTER_SUPER_ACK handling on edge (#478) 2020-10-27 17:02:35 +01:00
BetaBeauty
57f742fe42
Extra Device Description in P2P Connection and Register to Super Node (#475)
* add cmake export commands

* add extra edge description (hint) field

* add peer2peer description registry

* fixed bug: peer2peer not pass the dev_desc filed

* update -I option in the helper text

Co-authored-by: Longtao Wang <longtao.wang@cortexlabs.ai>
2020-10-26 21:13:56 +01:00
Francesco Carli
ed25ff8d01
Fixes minor issues introduced by #460 (#461) 2020-10-11 21:54:06 +02:00
Francesco Carli
c9eedd68f0
Initialize the federation of supernodes (#460)
* Add supernode2sock() and add_sn_to_federation_by_mac_or_sock()

* Update sn_utils.c

* Update sn.c and sn_utils.c

* Update REG_SUPER_ACK payload

* Update add_sn_to_federation_by_mac_or_sock()
2020-10-11 11:44:40 +02:00
Francesco Carli
8dfffd9fbe
Implement purge-and-re-registration process for supernodes (#445) 2020-10-01 16:23:10 +02:00
fcarli3
b2b76a450e How get federation name as parameter 2020-09-25 18:06:29 +02:00
francesco_carli
6e875e7cab
Add new federation flag to community structure 2020-09-24 20:04:07 +02:00
Logan007
df869bfd3b merged edge's subnet parameter into address parameter 2020-09-21 13:37:06 +05:45
Luca Deri
421968ac4e
Merge pull request #430 from VergLsm/dev
fix(win): "config.h: No such file or directory"
2020-09-20 18:31:43 +02:00
VergLsm
907e56a525
fix(win): "config.h: No such file or directory" 2020-09-21 00:14:28 +08:00
Logan007
2c77729acf removed jitter allowance for systemic packets 2020-09-19 15:47:16 +05:45
Logan007
90bf8da3f5 dropped OpenSSL 1.0 support 2020-09-14 20:46:53 +05:45
Logan oos Even
90a071a1d3
Merge branch 'dev' into revCc20 2020-09-01 20:16:32 +05:45
Logan007
8757312d41 reworked cc20 2020-09-01 20:09:29 +05:45
Logan007
399ecf8801 reworked cc20 2020-09-01 15:13:25 +05:45
Logan oos Even
56071bf494
Merge branch 'dev' into amndmntAes 2020-08-31 02:36:01 +05:45
Logan007
c9412a290b made aes always available 2020-08-31 02:24:23 +05:45
Logan007
8d7680408f cosmetics on random numbers code 2020-08-30 03:05:48 +05:45
Luca Deri
31a05e18d1
Merge pull request #389 from Logan007/revTf
reworked twofish implementation and replaced it by a faster version
2020-08-28 13:01:19 +02:00
Luca Deri
9038e7dbe6
Merge pull request #380 from Logan007/revAes
changed aes transform to cipher text stealing mode
2020-08-28 12:56:17 +02:00