Commit Graph

1217 Commits

Author SHA1 Message Date
Hamish Coleman
f2f49111b7 Add reference to a ticket for this problem 2021-10-31 19:28:42 +00:00
Hamish Coleman
88bd8e566f Fix clone command, removing the half removed old fetch-based command 2021-10-31 19:16:47 +00:00
Hamish Coleman
d8fa2ef9da Return the tags check to the releases, use our own clone and remove all the debug output 2021-10-31 19:04:35 +00:00
Hamish Coleman
11512fe1c8 Fix spelling 2021-10-31 19:04:35 +00:00
Hamish Coleman
a4f5b18308 Of course, nobody has a standard git repo layout, so need to jump more hoops 2021-10-31 19:04:35 +00:00
Hamish Coleman
d9d524a8d8 Add more debug data output 2021-10-31 19:04:35 +00:00
Hamish Coleman
e709997b3c Abandon using the github checkout action, it is clearly at fault 2021-10-31 19:04:35 +00:00
Hamish Coleman
23ef8e4bfe Adjust pull command to pull.rebase=false 2021-10-31 19:04:35 +00:00
Hamish Coleman
3e2be20614 Try returning to the 'normal' command, after force pulling the correct repo data 2021-10-31 19:04:35 +00:00
Hamish Coleman
6395aa4fbc Getting closer, it clearly showed the upstream had a different view than this checkout 2021-10-31 19:04:35 +00:00
Hamish Coleman
71021abd97 Try a different way to fetch the right tag data 2021-10-31 19:04:35 +00:00
Hamish Coleman
9b081805f5 Add more tag debugging output 2021-10-31 19:04:35 +00:00
Hamish Coleman
55c063513d Shorten line to address yamllint warning 2021-10-31 19:04:35 +00:00
Hamish Coleman
1adbdc9a00 Avoid exitcode triggering job failure 2021-10-31 19:04:35 +00:00
Hamish Coleman
e63b0f3c53 Attempt to work around strage git behaviour in github 2021-10-31 19:04:35 +00:00
Hamish Coleman
3371a50d5a Add more debug data, still trying to work out why github doesnt think tags are tags 2021-10-31 19:04:35 +00:00
Hamish Coleman
0a24c40e25 Tags dont work properly with a thin clone 2021-10-31 19:04:35 +00:00
Hamish Coleman
e5b373dd10 With the better release gating, we dont need to check if the job can run (also allows more debug info output) 2021-10-31 19:04:35 +00:00
Hamish Coleman
5538a55090 Add some debug info to the release automation 2021-10-31 19:04:35 +00:00
Hamish Coleman
78889f8d98 Fix - if we want to run git commands, we need a git repo clone 2021-10-31 19:04:35 +00:00
Hamish Coleman
0929185d04 Fix tagtype logic, shell quotes need to be correct for shell vars 2021-10-31 19:04:35 +00:00
Logan oos Even
ecff46a043
applied tiny optimization to PACKET's code path (#882) 2021-10-31 22:38:56 +05:45
Hamish Coleman
6acca5085b
Merge pull request #880 from hamishcoleman/release
Only trigger automatic release process on annotated tags
2021-10-31 13:35:33 +00:00
Hamish Coleman
e1845136a3 Fix workflow syntax - of course keys cannot be defined twice 2021-10-31 11:49:04 +00:00
Hamish Coleman
65062ca594 Actions set-output is only scoped within the same job id 2021-10-31 11:47:08 +00:00
Hamish Coleman
71521b81d8 Only trigger release process on annotated tags
Annotated tags are meant for releases while lightweight tags are meant
for private or temporary object labels.

For this reason, we should not trigger the automatic release actions
unless we have an annotated tag.
2021-10-31 11:36:29 +00:00
Logan oos Even
14c881928a
updated Building.md 2021-10-31 15:40:23 +05:45
Hamish Coleman
b9eac35c00
Fix build system errors (#878)
* Attempt cross compiling for apple silicon

* Try the apple expected compiler

* Make config.log viewable to figure out the compiler error

* Attempt to install the missing architecture

* Leave this branch in a working and documented what is missing state

* Try cross-compiling on macos with a specific SDK version

* Every now and again the runner pacakge db gets out of sync with reality - avoid this ever stopping a build, at the expense of making the builds take longer to run

* Add needed macos cross compile linker flag

* Fix package db sync for binaries build as well

* Add a fat binary build

* Add missing dep on the new binaries_macos_universal build

* Copy the macos cross compile artifacts into the right shared binaries bucket

* Use the correct arch-based subdir name for macos binaries
2021-10-28 00:47:41 +05:45
Luca Deri
29632e9589
Minor update 2021-10-27 20:46:42 +02:00
Luca Deri
9f2eb321de
Moved to 3.1 2021-10-27 20:42:25 +02:00
Luca Deri
bd5c3d91a6
Moved to 3.1 2021-10-27 20:42:03 +02:00
Logan oos Even
9c50e96e7b
updated Authentication.md 2021-10-26 03:31:01 +05:45
Hamish Coleman
999b3ffbf3
fixed python JSON clients so they don't hang if the daemon does not respond (or is not even running) (#876) 2021-10-25 18:36:47 +05:45
Hamish Coleman
cea8bf8644
handled all remaining lint warnings (#875)
* Add workaround for 'truthy' warnings in yaml

See https://github.com/adrienverge/yamllint/issues/158
for some more discussion

* Check each yamllint line length warning and clearly markup those which cannot be easily folded into shorter lines
2021-10-25 16:30:34 +05:45
Hamish Coleman
6c1ed021b1
expanded YAML linting to cover every yaml file found in this repo (#874) 2021-10-25 16:07:01 +05:45
Hamish Coleman
c5253ecf2a
Automatically upload binaries when tagged (#871)
* Add a workflow to automatically upload packages in to tagged releases

* Mark automatic release as a pre-release as that way its contents are actually visible

* Dont run the release job unless we are acting on a tag

* Minor rename to try and fit description into github graph view
2021-10-25 02:24:41 +05:45
Logan oos Even
1690241b9b
updated Scratchpad.md 2021-10-25 02:04:57 +05:45
Hamish Coleman
10b3464bd2
Linting for yaml files (#872)
* Add YAML file linting

* Add cmake-linux.yml lint and address its concerns
2021-10-25 01:37:21 +05:45
Hamish Coleman
e727304681
fixed support for python versions prior to 3.6 ... (#870)
... which do not support a context manager in the socketserver
2021-10-24 17:16:48 +05:45
Logan oos Even
3b187b4ac8
updated JSON API password handling '--management-password <pw>' (#869) 2021-10-24 15:22:36 +05:45
Logan oos Even
7bace3755c
updated Federation.md 2021-10-24 13:09:33 +05:45
Logan oos Even
c61b62ab1b
choose supernode selection strategy at run-time '--select-rtt' (#864) 2021-10-24 12:53:25 +05:45
Hamish Coleman
7b7449c813
Minor JSON field name fixes and additions (#865)
* Change JSON supernodes field to match the struct member name

* Add some missing fields to the edge json output.
2021-10-24 04:05:36 +05:45
Hamish Coleman
7eb3f2cd7f
Rename scripts for better consistancy (#866)
* Address shellcheck concerns with n2n_gateway.sh script

* Rename n2n_gateway.sh to live with all the other scripts (and update docs)

* Rename hack_fakeautoconf to make it clearly a shell script

* Address shellcheck concerns with hack_fakeautoconf.sh

* Rename python scripts to match other n2n tools

* Fix windows compile - when streamlining the use of hack_fakeautoconf.sh, I forgot to update all uses of this script
2021-10-24 03:58:01 +05:45
Hamish Coleman
80b33cd1a9
Basic C Code lint checker and shell checker (#859)
* 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
2021-10-24 01:21:18 +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
e6fcf1c55b
Cleanup and Documentation for JSON management API (#856)
* Reimplement JSON mgmt with clear separation of read/write actions

* Reduce boilerplate by using a table driven command definition for json mgmt commands

* Port tools to use new json api

* Add a basic authentication for json mgmt commands

* If a auth key is given, it must match

* Add auth key to management scripts

* Add a flag bitfield to clearly turn the tag param into a options list

* Allow simple pass-through of any command from n2nctl

* Convert the n2nctl to use an object oriented interface

* Handle sigpipe in the n2nhttpd - this happens if the remote client disconnects unexpectely

* Remove some repetition from the server

* Use the correct options to allow reuseaddr

* Dont generate a scary message on ctrl-c

* Convert n2nhttpd to use object based RPC

* Use the same longopt for both tools

* Pass any extra args through to the RPC

* Add some documentation for the scripts in the repository

* Spelling fix

* Add documentation for the JSON reply mangement API
2021-10-18 02:01:42 +05:45
Logan oos Even
966b6b9394
updated Scratchpad.md 2021-10-17 22:37:41 +05:45
Hamish Coleman
94e6f4a8a8
add a rendered html page to the example httpd server (#855)
* Expand example http gateway with html rendered stats

* Update the httpd comments
2021-10-16 06:00:21 +05:45
Hamish Coleman
bb3de5698c
added JSON interfaces to edge management port and scripts to further process output (#854)
* Add management commands to show data in JSON format

* Add a script to query the JSON management interface

* Suprisingly, the github runner does not have flake8 installed

* Add n2nctl debugging output to show the raw data received from the JSON

* Ensure well known tag wrap-around semantics

* Try to ensure we check every edge case in the protocol handling - only valid packets are allowed

* Add a very simple http to management port gateway

* Fix the lint issue
2021-10-16 00:11:39 +05:45