Kristoffer Dalby
ecc26432fd
Fix excessive replace
2022-02-27 18:48:12 +01:00
Kristoffer Dalby
acb945841c
Generalise registration for pre auth keys
2022-02-27 18:42:15 +01:00
Kristoffer Dalby
eda0a9f88a
Lock allocation of IP address
...
current logic is not safe as it will allow an IP that isnt persisted to
the DB to be given out multiple times if machines joins in quick
succession.
This adds a lock around the "get ip" and machine registration and save
to DB so we ensure thiis isnt happning.
Currently this had to be done three places, which is silly, and outlined
in #294 .
2022-02-24 13:18:18 +00:00
Adrien Raffin-Caboisse
9cedbbafd4
chore(all): update some files for linter
2022-02-17 09:32:51 +01:00
Csaba Sarkadi
1a6e5d8770
Add support for multiple IP prefixes
2022-01-16 14:18:22 +01:00
wakeful-cloud
1c7cb98042
Template Fixes
2021-12-22 19:43:53 -07:00
Kristoffer Dalby
34f4109fbd
Add back privatekey, but automatically generate it if it does not exist
2021-11-28 09:17:18 +00:00
Kristoffer Dalby
ff8c961dbb
Make sure comparison of nodekey is on the same format
2021-11-28 08:23:45 +00:00
Kristoffer Dalby
59aeaa8476
Ensure we always have the key prefix when needed
2021-11-27 20:25:12 +00:00
Kristoffer Dalby
c38f00fab8
Unmarshal keys in the non-deprecated way
2021-11-26 23:50:42 +00:00
Kristoffer Dalby
cfd53bc4aa
Factor wgkey to types/key
...
This commit converts all the uses of wgkey to the new key interfaces.
It now has specific machine, node and discovery keys and we now should
use them correctly.
Please note the new logic which strips a key prefix (in utils.go) that
is now standard inside tailscale.
In theory we could put it in the database, but to preserve backwards
compatibility and not spend a lot of resources on accounting for both,
we just strip them.
2021-11-26 23:30:42 +00:00
Kristoffer Dalby
cec1e86b58
Add missing request arguemnt
2021-11-24 12:16:56 +00:00
Kristoffer Dalby
dcbf289470
Rename idKey to machineKey to keep consistency
2021-11-24 12:15:55 +00:00
Kristoffer Dalby
fdd64d98c8
Add missing iff to handle expired preauthkey machines
2021-11-24 12:15:32 +00:00
Kristoffer Dalby
68dc2a70db
Update neighbours if node is expired or refreshed
...
In addition, only pass the map of registered and not expired nodes to
clients.
2021-11-22 19:51:16 +00:00
Kristoffer Dalby
caf1b1cabc
Fix typo
2021-11-22 19:35:24 +00:00
Kristoffer Dalby
021c464148
Add cache for requested expiry times
...
This commit adds a sentral cache to keep track of clients whom has
requested an expiry time, but were we need to keep hold of it until the
second request comes in.
2021-11-22 19:32:52 +00:00
Kristoffer Dalby
e600ead3e9
Make sure nodes can reauthenticate
...
This commit fixes an issue where nodes were not able to reauthenticate.
2021-11-22 19:32:11 +00:00
Kristoffer Dalby
1687e3b03f
Removed unused parameter
2021-11-21 21:29:27 +00:00
Kristoffer Dalby
c2393685f1
Remove expiry update in expiry, we dont want to extend it just because they _try_ to connect
2021-11-21 21:14:40 +00:00
Kristoffer Dalby
fd5f42c2e6
Move handle expired machine to the end of registration
2021-11-21 21:14:13 +00:00
Kristoffer Dalby
bda2d9c3b0
Remove unused param
2021-11-21 14:00:48 +00:00
Kristoffer Dalby
c4ecc4db91
Simplify control flow in RegistrationHandler
...
This commits tries to dismantle the complicated "if and or" in the
RegistrationHandler by factoring out the "is Registrated" into a root
if.
This, together with some new comments, should hopefully make it a bit
easier to follow what is happening in all the different cases that needs
to be handled when a Node contacts the registration endpoint.
2021-11-21 13:59:24 +00:00
Kristoffer Dalby
8ccc51ae57
Remove special case for authkey
...
We no longer have weird expire behaviour, so we dont need this case
2021-11-21 13:45:19 +00:00
Kristoffer Dalby
9aac1fb255
Remove expiry logic, this needs to be redone
2021-11-19 09:02:29 +00:00
Kristoffer Dalby
106b1e7e8d
Create constants for other reg methods
2021-11-18 17:51:54 +00:00
Kristoffer Dalby
58d1255357
Remove unneeded returns
2021-11-18 08:51:33 +00:00
Kristoffer Dalby
981f712660
Remove unused param
2021-11-18 08:51:21 +00:00
Kristoffer Dalby
50dcb8bb75
Use valid handler for registered authkey machines
2021-11-18 08:50:53 +00:00
Kristoffer Dalby
a8a8f01429
Make "authKey" a constant
2021-11-18 08:49:55 +00:00
Kristoffer Dalby
35c3fe9608
Move registration workflow into functions
2021-11-17 22:39:41 +00:00
Kristoffer Dalby
715542ac1c
Add and fix stylecheck (golint replacement)
2021-11-15 17:24:24 +00:00
Kristoffer Dalby
471c0b4993
Initial work eliminating one/two letter variables
2021-11-14 20:32:03 +01:00
Kristoffer Dalby
85f28a3f4a
Remove all instances of undefined numbers (gonmd)
2021-11-14 18:31:51 +01:00
Kristoffer Dalby
c9c16c7fb8
Remove unused params or returns
2021-11-14 18:03:21 +01:00
Kristoffer Dalby
89eb13c6cb
Add and fix nlreturn (new line return)
2021-11-14 16:46:09 +01:00
Kristoffer Dalby
2634215f12
golangci-lint --fix
2021-11-13 08:39:04 +00:00
Kristoffer Dalby
03b7ec62ca
Go format with shorter lines
2021-11-13 08:36:45 +00:00
Kristoffer Dalby
c2eb3f4d36
Use long command in example and remove pointerlist
2021-11-04 22:18:06 +00:00
Kristoffer Dalby
cbf3f5d640
Resolve merge conflict
2021-10-30 15:33:01 +00:00
Raal Goff
2d252da221
suggested documentation and comments
2021-10-29 21:35:07 +08:00
Ward Vandewege
f9187bdfc4
Switch to named arguments for all nodes
subcommands. Update docs
...
accordingly. Fix integration test failure.
2021-10-28 09:31:15 -04:00
Kristoffer Dalby
582eb57a09
Use the new derp map
2021-10-22 16:56:00 +00:00
Kristoffer Dalby
da14750396
Merge branch 'main' into main
2021-10-19 15:26:18 +01:00
Kristoffer Dalby
677bd9b657
Implement namespace matching
2021-10-18 19:27:52 +00:00
Juan Font Alonso
01a5fe3c51
Added tests, solved some bugs, and code reorg
2021-10-17 23:58:09 +02:00
Juan Font Alonso
687e8d12be
Do not use the full application for getMapResponseDNSConfig
2021-10-17 12:10:03 +02:00
Juan Font Alonso
01f755ecf9
Send UserProfile info for the peers' namespaces
2021-10-17 12:07:01 +02:00
Juan Font Alonso
061efa1822
Do not include BaseDomain as full route in DNSConfig + code reorg
2021-10-17 11:57:53 +02:00
unreality
afbfc1d370
Merge branch 'main' into main
2021-10-16 22:31:37 +08:00
Raal Goff
0603e29c46
add login details to RegisterResponse so GUI clients show login display name
2021-10-15 23:09:55 +08:00
Juan Font
93517aa6f8
Apply suggestions from code review
...
Renamed AlreadyUsed to Used
Co-authored-by: Kristoffer Dalby <kradalby@kradalby.no>
2021-10-13 22:51:55 +02:00
Juan Font Alonso
30788e1a70
Add AlreadyUsed field to Auth Keys ( fixes #157 and #158 )
2021-10-13 18:13:26 +02:00
Raal Goff
74e6c1479e
updates from code review
2021-10-10 17:22:42 +08:00
Juan Font
c4487b73c4
Merge branch 'main' into magic-dns-support
2021-10-09 12:24:07 +02:00
Kristoffer Dalby
2997f4d251
Merge branch 'main' into main
2021-10-08 22:21:41 +01:00
Raal Goff
e407d423d4
updates from code review
2021-10-08 17:43:52 +08:00
unreality
35795c79c3
Handle trailing slash on uris
...
Co-authored-by: Kristoffer Dalby <kradalby@kradalby.no>
2021-10-08 15:26:31 +08:00
Raal Goff
c487591437
use go-oidc instead of verifying and extracting tokens ourselves, rename oidc_endpoint to oidc_issuer to be more inline with spec
2021-10-06 17:19:15 +08:00
Juan Font
6981543db6
Only search domain from current namespace in MapResponse
2021-10-05 19:00:40 +02:00
Kristoffer Dalby
722084fbd3
Comment out aggressive logging
2021-10-05 16:51:42 +00:00
Juan Font Alonso
a0fa652449
MagicDNS changes merged back
2021-10-04 23:49:16 +02:00
Juan Font Alonso
2eef535b4b
Merged main
2021-10-04 23:43:42 +02:00
Kristoffer Dalby
2eb57e6288
Clean up pointer usage consistency.
...
This tries to make the same functions emit and consume the same type of
data all over the application.
If a function transform data, it should emit new data, not a pointer.
2021-10-04 17:39:01 +00:00
Kristoffer Dalby
1d5b090579
Initial work on Prometheus metrics
...
This commit adds some Prometheus metrics to /metrics in headscale.
It will add the standard go metrics, some automatic gin metrics and some
initial headscale specific ones.
Some of them has been added to aid debugging #97 (loop bug)
In the future, we can use the metrics to get rid of the sleep in the
integration tests by checking that our expected number of nodes has been
registered:
```
headscale_machine_registrations_total
```
2021-10-04 16:28:07 +00:00
Juan Font Alonso
e60ceefea9
Fixing nil issue
2021-10-04 18:03:44 +02:00
Kristoffer Dalby
3c3189caa6
Move toNode, add type helpers, split peers and shared
...
This commit moves toNode to the bottom of the file, and adds a helper
function for lists of Machines to be converted.
It also adds string helpers for Machines and lists of machines.
Lastly it splits getPeers into getDirectPeers, which exist in the same
namespace, and getShared, which is nodes shared with the namespace.
getPeers is kept as a function putting together the two lists for
convenience.
2021-10-02 22:03:34 +01:00
Kristoffer Dalby
0d4a006536
Consitently use Machine pointers
...
This commit rewrites a bunch of the code to always use *Machine instead
of a mix of both, and a mix of tailcfg.Node and Machine.
Now we use *Machine, and if tailcfg.Node is needed, it is converted just
before needed.
2021-10-02 22:00:09 +01:00
Kristoffer Dalby
0475eb6ef7
Move DB call of pollmap to Machine inside a function
2021-10-02 21:58:28 +01:00
Juan Font Alonso
19492650d4
Fixed error on assign
2021-10-02 13:03:08 +02:00
Juan Font Alonso
36ae14bccf
Send search domains
2021-10-02 12:13:19 +02:00
Juan Font Alonso
656237e167
Propagate dns config vales across Headscale
2021-10-02 11:20:42 +02:00
Raal Goff
e7a2501fe8
initial work on OIDC (SSO) integration
2021-09-26 16:53:05 +08:00
Juan Font
48b73fa12f
Implement node sharing functionality
2021-09-02 16:59:03 +02:00
Kristoffer Dalby
01e781e546
Pass DNSConfig to nodes in MapResponse
2021-08-24 07:11:45 +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
9698abbfd5
Resolve merge conflict
2021-08-13 10:33:19 +01:00
Kristoffer Dalby
15b8c8f4c5
Remove lock from keepAlive
2021-08-06 20:08:51 +01:00
Kristoffer Dalby
4243885246
Rewrite old lock error msg
2021-08-06 20:03:25 +01:00
Juan Font
c95cf15731
Fixed log message
2021-08-06 00:21:34 +02:00
Kristoffer Dalby
1abc68ccf4
Removes locks causing deadlock
...
This commit removes most of the locks in the PollingMap handler as there
was combinations that caused deadlocks. Instead of doing a plain map and
doing the locking ourselves, we use sync.Map which handles it for us.
2021-08-05 22:14:37 +01:00
Kristoffer Dalby
575b15e5fa
Add more trace logging
2021-08-05 21:47:06 +01:00
Kristoffer Dalby
a8c8a358d0
Make log keys lowercase
2021-08-05 20:57:47 +01:00
Kristoffer Dalby
0bb2fabc6c
Convert missing from api.go
2021-08-05 18:16:21 +01:00
Kristoffer Dalby
ee704f8ef3
Initial port to zerologger
2021-08-05 18:11:26 +01:00
Kristoffer Dalby
eda6e560c3
debug logging
2021-08-02 22:51:50 +01:00
Juan Font Alonso
0159649d0a
Send the namespace name as user to the clients
2021-07-11 16:39:19 +02:00
Juan Font Alonso
eabb1ce881
Fix minor typo on the register webpage
2021-07-11 15:05:32 +02:00
Juan Font Alonso
bff3d2d613
Added HTTP responses on errors
2021-07-11 11:37:17 +02:00
Juan Font Alonso
d4b27fd54b
Merge branch 'main' into acls
2021-07-04 21:54:55 +02:00
Juan Font Alonso
ff9d99b9ea
Use gorm connection pool
2021-07-04 21:40:46 +02:00
Juan Font
202d6b506f
Load ACL policy on headscale startup
2021-07-04 13:24:05 +02:00
Juan Font Alonso
aa27709e60
Update code to Tailscale 1.10
2021-06-25 18:57:08 +02:00
Juan Font Alonso
69ba750b38
Update Headscale to depend on gorm v2
2021-06-24 15:44:19 +02:00
Juan Font Alonso
5db7716be2
Reduce the mutex size when the client closes the connection
2021-06-09 20:55:25 +02:00
Juan Font Alonso
cb1a81fe4c
Close the update channel when the client actually closes the connection. Fixes #32 .
2021-06-08 19:19:40 +02:00
Juan Font Alonso
aab0bfe2d5
Removed redundant statement
2021-06-05 12:21:49 +02:00
Juan Font Alonso
47b22f3950
Minor improvement on login
2021-06-05 12:19:48 +02:00
Juan Font Alonso
d4c2870d7e
Handle client sending new NodeKey ( fixes #32 )
2021-06-05 12:13:55 +02:00
Juan Font Alonso
4be39f9b83
Improved log messages, and case That Should Never Happen
2021-05-26 21:39:57 +02:00