kaiyou
e788b3eaef
Update README.md
...
Co-authored-by: Leo Antunes <leo@costela.net>
2020-05-27 23:26:29 +02:00
kaiyou
129291e848
Use interface name instead of cluster name
...
The cluster name option is not required anymore and
removed, the interface name is used to name the cluster
directly. For backward compatibility, the old path for storing
cluster state is tried as a fallback when loading.
2020-05-27 23:26:29 +02:00
kaiyou
ca3064f6a7
Add documentation about cluster-name setting
2020-05-27 23:26:29 +02:00
kaiyou
adc7a807df
Expose ClusterName instead of Banner/StatePath
2020-05-27 23:26:29 +02:00
kaiyou
b9df078538
Fix a typo in the etc/hosts banner
...
Co-authored-by: Leo Antunes <leo@costela.net>
2020-05-27 23:26:29 +02:00
kaiyou
404b332e6a
Fix the state tests using custom statePath
2020-05-27 23:26:29 +02:00
kaiyou
5930f332b8
Add an e2e test running two clusters
2020-05-27 23:26:29 +02:00
kaiyou
31b8263e96
Use the StatePath to config when loading the state
2020-05-27 23:26:29 +02:00
kaiyou
a0882dad49
Use the custom etc/hosts banner
2020-05-27 23:26:29 +02:00
kaiyou
f1de2def7f
Add Banner and StatePath settings
...
Banner is used to carry a custom etc/hosts banner while StatePath holds
the path to cluster state storage.
2020-05-27 23:26:29 +02:00
Leo Antunes
7910b5c379
ci: add MIPS* arches to releases; bump go 1.14.3
...
refs #47
2020-05-27 17:49:10 +02:00
kaiyou
61988692a1
Parse arguments in the tests entrypoint
...
Add an argument parsing routine to the tests entrypoint, and use it
to parse the interface name, passed to
wireguard-go.
2020-05-21 10:17:48 +02:00
Leo Antunes
2fe308cd1d
tests: fix e2e image build
2020-05-19 23:00:54 +02:00
kaiyou
49c0d7f802
Make statePath a variable (temporary)
...
This is a temporary fix until the state path is made
configurable.
2020-05-13 13:52:54 +02:00
kaiyou
66b0321bf7
Fail more explicitely in cluster state tests
...
Co-authored-by: Leo Antunes <leo@costela.net>
2020-05-13 13:52:54 +02:00
kaiyou
e9b9239eae
Reinstante cluster.LocalNode
...
This makes for more straightforward calls. Also, generate
the localNode directly in wg.New.
2020-05-13 13:52:54 +02:00
kaiyou
a0aa0bcc0e
Fix unit tests due to unexported assignOverlayAddr
2020-05-13 13:52:54 +02:00
kaiyou
5b6923c272
Unexporter AssignOverlayAddress
...
Instead, the overlay address is assigned upon creation.
Also, the wireguard state is responsible for populating
the local node object.
2020-05-13 13:52:54 +02:00
kaiyou
c50011bc36
Use errors.Wrap instead of manual formatting
2020-05-13 13:52:54 +02:00
kaiyou
32a300ffeb
Rename node.Decode and node.Encode
...
EncodeMeta and DecodeMeta are more explicit.
2020-05-13 13:52:54 +02:00
kaiyou
078946dbdd
Use localNode to store the local node name
...
Also rename setupDelegate to SetLocalNode, so that
main can call SetLocalNode then Update().
2020-05-13 13:52:54 +02:00
kaiyou
28a31efc1f
Rename saveState to state.save
2020-05-13 13:52:54 +02:00
kaiyou
d85fb84398
Unexport state from the cluster package
2020-05-13 13:52:54 +02:00
kaiyou
9ddcbb7914
Apply suggestions from code review
...
Review suggestions in the documentation
Co-authored-by: Leo Antunes <leo@costela.net>
2020-05-13 13:52:54 +02:00
kaiyou
faf1c35d96
Implement the delegate interface on Node
...
Implementing on Node makes a bit more sense than implementing on Cluster
even if the difference in code is insignificant.
2020-05-13 13:52:54 +02:00
kaiyou
f715cfa787
Remove the unneeded writeToEtcHosts function
2020-05-13 13:52:54 +02:00
kaiyou
61104a9272
Add some comments to the main function
2020-05-13 13:52:54 +02:00
kaiyou
b0e41d5c35
Rename WgState to State and NewWgState to New
...
This also caused renaming local variables to avoid
conflicting with the wg package name itself.
2020-05-13 13:52:54 +02:00
kaiyou
5d1acc1fab
Add documentation to public functions and types
2020-05-13 13:52:54 +02:00
kaiyou
3a882eb112
Generate the local node directly in main.go
...
Instead of using a trivial function, simply generate the
local node from main.go, manually assign fields from the
nodeMeta struct.
2020-05-13 13:52:54 +02:00
kaiyou
0162f9da2c
Add unit tests for state functions
...
Currently unit tests only succeed if the state path
is writeable, since it is hardcoded.
2020-05-13 13:52:54 +02:00
kaiyou
13e1515f7d
Split cluster into multiple files
2020-05-13 13:52:54 +02:00
kaiyou
622cfce1ad
Add unit tests for node encoding/decoding
2020-05-13 13:52:54 +02:00
kaiyou
46da51b7aa
Implement node function as type functions
...
This means nodeMeta can be private again, and also makes it
easier to pass a Node object to the cluster for local meta,
instead of a generic byte[] function.
For later updating, that node is passed using Update() instead
of New().
2020-05-13 13:52:54 +02:00
kaiyou
dadfbee083
Split the application into modules
...
Splitting into modules will help keep concerns separate,
at the cost of a slightly more verbose code.
2020-05-13 13:52:54 +02:00
kaiyou
740a9c44c6
Update dependencies
2020-05-13 13:52:54 +02:00
kaiyou
a5a55e9447
Properly wrap errors from config.go
...
Co-authored-by: Leo Antunes <leo@costela.net>
2020-05-13 13:52:54 +02:00
kaiyou
7adb944f92
Properly wrap errors from config.go
...
Co-authored-by: Leo Antunes <leo@costela.net>
2020-05-13 13:52:54 +02:00
kaiyou
bce8a0451a
Move the bindAddress computation to config parsing
2020-05-13 13:52:54 +02:00
kaiyou
9fdab65237
Revert "Move the metadata parsing code to node.go"
...
This reverts commit ac6289b5bf95e8903ea90ddf807832a2358371b0.
2020-05-13 13:52:54 +02:00
kaiyou
beae4f2044
Restore comment about a "showkey" subcommand
2020-05-13 13:52:54 +02:00
kaiyou
00c9d5ec76
Create the node slice with the proper length
...
Co-authored-by: Leo Antunes <leo@costela.net>
2020-05-13 13:52:54 +02:00
kaiyou
b0bfeb1f8e
Move the metadata parsing code to node.go
2020-05-13 13:52:54 +02:00
kaiyou
0e799d6074
Parse metadata outside of cluster.go
...
Move the calls for metadata decoding from the cluster
membership management loop to the main loop. This task
was not directly related to the cluster, and was adding
complexity, including the need for multierr structures.
2020-05-13 13:52:54 +02:00
kaiyou
366f906d5d
Do not pass the config object to newCluster
...
Decouple the config structure from the cluster management and
stop passing the config object around.
2020-05-13 13:52:54 +02:00
kaiyou
97525f4b10
Stop using wireguard in cluster.go
...
The wireguard is mostly used to compute metadata.
Metadata is now computed by main.go and encoded in
node.go, the cluster only receives a function generating
the binary metadata.
2020-05-13 13:52:54 +02:00
kaiyou
0d93439d0d
Move node related stuff to node.go
...
The cornerstone for exchanging data is the node
structure and associated metadata. Moving it to a
separate file (maybe later a separate module) will help
decoupling.
2020-05-13 13:52:54 +02:00
kaiyou
5772640cf9
Fix a simple typo
2020-05-13 13:52:54 +02:00
kaiyou
f2e53dd869
Lower the complexity of newCluster()
...
Move the computation of clusterKey and bindAddress
to separate functions.
2020-05-13 13:52:54 +02:00
kaiyou
7c398181a7
Remove unused go-windows-terminal-sequences
2020-05-13 13:52:54 +02:00