* Convert zstd feature to default disable
* All autoconf test use one standard template
To simplify the testing, cross-compilation and repeatable build process,
no configure options are automatically probed for - they all default to
off and are all using the same template.
The --with-x options should be deprecated and replaced with --enable-x
because there is no syntax checking for --with options in autoconf.
There are still some differences between the config options, but this
should provide a starting point.
* Remove unused code from the autoconf
* Remove warnings from default build
* Avoid calling port mapping functions if none are enabled
* Start with all builds in neutral config
* Add more missing code guards
* Adjust code guard location to placate cmake
* UPnP port redirection is supported.
* compile fixes
* compile fix
* optimize reconnection code
* prepared upnp threadification to counter main loop stall at supernode change
* NAT-PMP port forwarding support, temporarily merge codes to resolve conflicts.
* make compile fix
* prepared threadification in more detail
* adopted threadification to new file setup
* cleaned up
* renamed functions and data structures
* fixes
* differentiated between miniupnp and natpmp and added corresponding lib support to makefile
* name
* commented unused header includes
* comments
* license
* fixes
* fixes
* fixes
* NAT-PMP is already available.
* added CLI parameter to disable port forwarding if required
* preliminary made use of multithreading
* adjusted log level
* added man page documentation
* def'ed conf
* made pmpnat adjustments
Co-authored-by: fengdaolong <fengdaolong@gmail.com>
* Factor build packages out into a more maintainable list
* Create a location for scripts to live
* Provide a make target to return the source dir as close as reasonable to the original distributed state
* Add a code lint step, checking the coding style
* Change test harness as recommended by shellcheck
* Ensure we actually have the linter tool installed
* Use the correct directory for cmake to run the tests
* Adjust for the older uncrustify in the current github ubuntu-latest
* Make one file pass the linter
* Integrate the lint with the existing test workflow
* Add files with minimal changes needed to the linter
* Add more files with minimal changes needed to the linter
* Dont build binaries if we fail the lint test
* Update the phony targets with the lint steps
* Ensure the flake8 package is installed in the new lint workflow job
* Use the makefile to drive the packages needed to install for linting
* No need to add dependancies on lint, just rely on the workflow status to show failure
* Update the scripts dir README to reflect current assumptions
* Rename and briefly document the indent.sh script
* Fix the ignore to ignore the right Makefile
* Rename the test_harness script to make it clear it is a shell script
* Provide a master lint make target and add a shell script lint tool
* Elminate stray tabs
* Drop include/auth.h from linter - there are inconsistant results with function definitions when using the current uncrustify rules
* 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