Commit graph

359 commits

Author SHA1 Message Date
Juan Font 729cd54401 Renamed sharing function 2021-09-06 14:39:52 +02:00
Juan Font 7edd0cd14c Added add node cli 2021-09-03 10:23:45 +02:00
Juan Font 7ce4738d8a Preload namespace so the name can be shown 2021-09-03 10:23:26 +02:00
Juan Font 7287e0259c Minor linting issues 2021-09-02 17:08:39 +02:00
Juan Font d86de68b40 Show namespace in node list table 2021-09-02 17:06:47 +02:00
Juan Font 4ba107a765 README updated 2021-09-02 17:00:46 +02:00
Juan Font 187b016d09 Added helper function to get list of shared nodes 2021-09-02 16:59:50 +02:00
Juan Font 7010f5afad Added unit tests on sharing nodes 2021-09-02 16:59:12 +02:00
Juan Font 48b73fa12f Implement node sharing functionality 2021-09-02 16:59:03 +02:00
Juan Font 1ecd0d7ca4 Added DB SharedNode model to support sharing nodes 2021-09-02 16:57:26 +02:00
Juan Font 39c661d408
Merge pull request #99 from juanfont/explicit-ubuntu-version
Use explicit version in Dockerfile
2021-08-26 21:18:16 +02:00
Juan Font 91a48d6a43
Update Dockerfile
Use explicit version in Dockerfile (addresses #95)
2021-08-26 10:23:45 +02:00
Kristoffer Dalby 123f0fa185
Merge pull request #98 from kradalby/initial-dns-server-exit-node 2021-08-25 22:58:25 +01:00
Kristoffer Dalby ba3dffecbf
Update readme 2021-08-25 19:05:10 +01:00
Kristoffer Dalby 8735e5675c
Add a test for the getdnsconfig function 2021-08-25 19:03:04 +01:00
Kristoffer Dalby 3f5e06a0f8
Dont add the portnumber to the ip 2021-08-25 18:43:13 +01:00
Juan Font ba40a40b73
Merge pull request #96 from qbit/version_fix
Fix setting of version
2021-08-25 12:34:34 +02:00
Kristoffer Dalby b3732e7fb9
Add nameserver as resolver aswell 2021-08-25 07:04:48 +01:00
Aaron Bieber 104776ee84 fix setting of version 2021-08-24 07:49:15 -06:00
Kristoffer Dalby 01e781e546
Pass DNSConfig to nodes in MapResponse 2021-08-24 07:11:45 +01:00
Kristoffer Dalby e77c16b55a
Add DNSConfig to example and setup test 2021-08-24 07:10:09 +01:00
Kristoffer Dalby 987bbee1db
Add DNSConfig field to configuration 2021-08-24 07:09:47 +01:00
Juan Font 74d2fe1baa
Merge pull request #84 from kradalby/integration-tests-ci
Improve logic to keep nodes up to date with the network state
2021-08-23 09:42:07 +02:00
Kristoffer Dalby 98e63d5561
Merge pull request #94 from kradalby/split-lint-test
Split lint and test CI files
2021-08-23 07:46:11 +01:00
Kristoffer Dalby 059f13fc9d
Add missing comment for stream function 2021-08-23 07:38:14 +01:00
Kristoffer Dalby ebd27b46af
Add comment to updatemachine 2021-08-23 07:35:44 +01:00
Juan Font ca8d814918
Merge pull request #92 from kradalby/enhance-route-command
Enhance route command with ptables and multiple routes
2021-08-22 12:48:30 +02:00
Kristoffer Dalby 0aeeaac361
Always load machine object from DB before save/modify
We are currently holding Machine objects in memory for a long time,
while waiting for stream/longpoll, this might make us end up with stale
objects, that we just call save on, potentially overwriting stuff in
the database.

A typical scenario would be someone changing something from the CLI,
e.g. enabling routes, which in turn is overwritten again by the stale
object in the longpolling function.

The code has been left with TODO's and a discussion is available in #93.
2021-08-21 16:52:19 +01:00
Kristoffer Dalby 28ed8a5742
Actually rename lint 2021-08-21 15:42:23 +01:00
Kristoffer Dalby f749be1490
Split lint and test CI files
This commit splits the lint and test steps into two different jobs in
github actions.

Consider this a suggestion, the idea is that when we look at PRs we will
see explicitly which one of the two types of checks fails without having
to open Github actions.
2021-08-21 15:40:27 +01:00
Kristoffer Dalby 693bce1b10
Update test machine name properly 2021-08-21 15:35:26 +01:00
Kristoffer Dalby 4f97e077db
Add --all flag to routes enable command to enable all advertised routes 2021-08-21 15:04:30 +01:00
Kristoffer Dalby c883e79884
Enhance route command with ptables and multiple routes
This commit rewrites the `routes list` command to use ptables to present
a slightly nicer list, including a new field if the route is enabled or
not (which is quite useful).

In addition, it reworks the enable command to support enabling multiple
routes (not only one route as per removed TODO). This allows users to
actually take advantage of exit-nodes and subnet relays.
2021-08-21 14:49:46 +01:00
Kristoffer Dalby a054e2514a
Keep tailscale count at 25 in integration tests 2021-08-21 09:26:18 +01:00
Kristoffer Dalby c49fe26da7
Code clean up, loglevel debug for integration tests 2021-08-21 09:15:16 +01:00
Kristoffer Dalby d93a7f2e02
Make Info default log level 2021-08-20 17:15:07 +01:00
Kristoffer Dalby 88d7ac04bf
Account for racecondition in deleting/closing update channel
This commit tries to address the possible raceondition  that can happen
if a client closes its connection after we have fetched it from the
syncmap before sending the message.

To try to avoid introducing new dead lock conditions, all messages sent
to updateChannel has been moved into a function, which handles the
locking (instead of calling it all over the place)

The same lock is used around the delete/close function.
2021-08-20 16:52:34 +01:00
Kristoffer Dalby 1f422af1c8
Save headscale logs if jobs fail 2021-08-20 16:50:55 +01:00
Kristoffer Dalby 53168d54d8
Make http timeout 30s instead of 10s 2021-08-19 22:29:03 +01:00
Kristoffer Dalby b0ec945dbb
Make lastStateChange namespaced 2021-08-19 18:19:26 +01:00
Kristoffer Dalby 48ef6e5a6f
Rename keepAlive function, as it now does more things 2021-08-19 18:06:57 +01:00
Kristoffer Dalby 8d1adaaef3
Move isOutdated logic to updateChan consumation 2021-08-19 18:05:33 +01:00
Kristoffer Dalby dd8c0d1e9e Move most "poll" functionality to poll.go
This function migrates more poll functions (including keepalive) to
poll.go to keep it somehow in the same file.

In addition it makes changes to improve the stability and ensure nodes
get the appropriate updates from the headscale control and are not left
in an inconsistent state.

Two new additions is:

omitpeers=true will now trigger an update if the clients are not already up
to date

keepalive has been extended with a timer that will check every 120s if
all nodes are up to date.
2021-08-18 23:24:22 +01:00
Kristoffer Dalby 57b79aa852 Set timeout, add lastupdate field
This commit makes two reasonably major changes:

Set a default timeout for the go HTTP server (which gin uses), which
allows us to actually have broken long poll sessions fail so we can have
the client re-establish them.
The current 10s number is chosen randomly and we need more testing to
ensure that the feature work as intended.

The second is adding a last updated field to keep track of the last time
we had an update that needs to be propagated to all of our
clients/nodes. This will be used to keep track of our machines and if
they are up to date or need us to push an update.
2021-08-18 23:21:11 +01:00
Kristoffer Dalby 2f883410d2 Add lastUpdate field to machine, function issue message on update channel
This commit adds a new field to machine, lastSuccessfulUpdate which
tracks when we last was able to send a proper mapupdate to the node. The
purpose of this is to be able to compare to a "global" last updated time
and determine if we need to send an update map request to a node.

In addition it allows us to create a scheduled check to see if all known
nodes are up to date.

Also, add a helper function to send a message to the update channel of a
machine.
2021-08-18 23:17:38 +01:00
Kristoffer Dalby 6fa61380b2
Up client count, make arguments more explicit and clean up unused assignments 2021-08-18 23:17:09 +01:00
Juan Font 47b61c0cea
Merge pull request #86 from juanfont/better-ui
Improve tables in CLI
2021-08-16 09:33:47 +02:00
Juan Font d739ac830f
Merge pull request #87 from juanfont/fix-route-notify
Send notifications when enabling a route
2021-08-16 09:25:31 +02:00
Juan Font 26024fedc7
Merge branch 'main' into fix-route-notify 2021-08-16 00:29:38 +02:00
Juan Font a376b697c0 Send notifications when enabling a route 2021-08-16 00:17:26 +02:00