Skip to content

Commit c85a6e9

Browse files
committed
some stuff
1 parent 2d53eaa commit c85a6e9

File tree

7 files changed

+19
-19
lines changed

7 files changed

+19
-19
lines changed

agent/agent.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ type PublicKeys struct {
7070

7171
type Dialer func(ctx context.Context, logger slog.Logger) (Metadata, *peerbroker.Listener, error)
7272
type PostKeys func(ctx context.Context, keys PublicKeys) error
73-
type ListenWireguardPeers func(ctx context.Context, logger slog.Logger) (<-chan *peerwg.WireguardPeerMessage, func(), error)
73+
type ListenWireguardPeers func(ctx context.Context, logger slog.Logger) (<-chan peerwg.WireguardPeerMessage, func(), error)
7474

7575
func New(dialer Dialer, options *Options) io.Closer {
7676
if options == nil {

agent/wireguard.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
func (a *agent) startWireguard(ctx context.Context, addrs []netaddr.IPPrefix) error {
1414
if a.wg != nil {
1515
_ = a.wg.Close()
16+
a.wg = nil
1617
}
1718

1819
if !a.enableWireguard {
@@ -46,12 +47,12 @@ func (a *agent) startWireguard(ctx context.Context, addrs []netaddr.IPPrefix) er
4647
}
4748

4849
for {
49-
peer := <-ch
50-
if peer == nil {
50+
peer, ok := <-ch
51+
if !ok {
5152
break
5253
}
5354

54-
err := wg.AddPeer(*peer)
55+
err := wg.AddPeer(peer)
5556
a.logger.Info(ctx, "added wireguard peer", slog.F("peer", peer.Public.ShortString()), slog.Error(err))
5657
}
5758

cli/wireguardtunnel.go

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ func wireguardPortForward() *cobra.Command {
3434
Use: "wireguard-port-forward <workspace>",
3535
Aliases: []string{"wireguard-tunnel"},
3636
Args: cobra.ExactArgs(1),
37+
Hidden: true,
3738
Example: `
3839
- Port forward a single TCP port from 1234 in the workspace to port 5678 on
3940
your local machine

coderd/devtunnel/tunnel.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import (
2626
)
2727

2828
const (
29-
Proto = "https"
3029
EndpointWireguard = "wg-tunnel-udp.coder.app"
3130
EndpointHTTPS = "wg-tunnel.coder.app"
3231

@@ -111,7 +110,7 @@ allowed_ip=%s/128`,
111110
}()
112111

113112
return &Tunnel{
114-
URL: fmt.Sprintf("%s://%s.%s", Proto, cfg.ID, EndpointHTTPS),
113+
URL: fmt.Sprintf("https://%s.%s", cfg.ID, EndpointHTTPS),
115114
Listener: wgListen,
116115
}, ch, nil
117116
}
@@ -166,7 +165,7 @@ func sendConfigToServer(ctx context.Context, cfg Config) (created bool, err erro
166165
return false, xerrors.Errorf("marshal config: %w", err)
167166
}
168167

169-
req, err := http.NewRequestWithContext(ctx, "POST", Proto+"://"+EndpointHTTPS+"/tun", bytes.NewReader(raw))
168+
req, err := http.NewRequestWithContext(ctx, "POST", "https://"+EndpointHTTPS+"/tun", bytes.NewReader(raw))
170169
if err != nil {
171170
return false, xerrors.Errorf("new request: %w", err)
172171
}

codersdk/workspaceagents.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ func (c *Client) PostWireguardPeer(ctx context.Context, workspaceID uuid.UUID, p
275275
// WireguardPeerListener listens for wireguard peer messages. Peer messages are
276276
// sent when a new client wants to connect. Once receiving a peer message, the
277277
// peer should be added to the NetworkMap of the wireguard interface.
278-
func (c *Client) WireguardPeerListener(ctx context.Context, logger slog.Logger) (<-chan *peerwg.WireguardPeerMessage, func(), error) {
278+
func (c *Client) WireguardPeerListener(ctx context.Context, logger slog.Logger) (<-chan peerwg.WireguardPeerMessage, func(), error) {
279279
serverURL, err := c.URL.Parse("/api/v2/workspaceagents/me/wireguardlisten")
280280
if err != nil {
281281
return nil, nil, xerrors.Errorf("parse url: %w", err)
@@ -304,7 +304,7 @@ func (c *Client) WireguardPeerListener(ctx context.Context, logger slog.Logger)
304304
return nil, nil, readBodyAsError(res)
305305
}
306306

307-
ch := make(chan *peerwg.WireguardPeerMessage, 1)
307+
ch := make(chan peerwg.WireguardPeerMessage, 1)
308308
go func() {
309309
defer conn.Close(websocket.StatusGoingAway, "")
310310
defer close(ch)
@@ -322,7 +322,7 @@ func (c *Client) WireguardPeerListener(ctx context.Context, logger slog.Logger)
322322
continue
323323
}
324324

325-
ch <- &msg
325+
ch <- msg
326326
}
327327
}()
328328

peer/peerwg/peermessage.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ type WireguardPeerMessage struct {
2929
// WireguardPeerMessage to quickly determine if the message is meant for the
3030
// provided agentID.
3131
func WireguardPeerMessageRecipientHint(agentID []byte, msg []byte) (bool, error) {
32-
idx := bytes.Index(msg, []byte{10})
32+
idx := bytes.Index(msg, []byte{peerMessageSeparator})
3333
if idx == -1 {
3434
return false, xerrors.Errorf("invalid peer message, no separator")
3535
}

peer/peerwg/wireguard.go

+7-8
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,7 @@ import (
3636
)
3737

3838
func UUIDToInet(uid uuid.UUID) pqtype.Inet {
39-
uid[0] = 0xfd
40-
uid[1] = 0x7a
41-
uid[2] = 0x11
42-
uid[3] = 0x5c
43-
uid[4] = 0xa1
44-
uid[5] = 0xe0
39+
uid = privateUUID(uid)
4540

4641
return pqtype.Inet{
4742
Valid: true,
@@ -53,15 +48,19 @@ func UUIDToInet(uid uuid.UUID) pqtype.Inet {
5348
}
5449

5550
func UUIDToNetaddr(uid uuid.UUID) netaddr.IP {
51+
return netaddr.IPFrom16(privateUUID(uid))
52+
}
53+
54+
// privateUUID sets the uid to have the tailscale private ipv6 prefix.
55+
func privateUUID(uid uuid.UUID) uuid.UUID {
5656
// fd7a:115c:a1e0
5757
uid[0] = 0xfd
5858
uid[1] = 0x7a
5959
uid[2] = 0x11
6060
uid[3] = 0x5c
6161
uid[4] = 0xa1
6262
uid[5] = 0xe0
63-
64-
return netaddr.IPFrom16(uid)
63+
return uid
6564
}
6665

6766
var logf tslogger.Logf = log.Printf

0 commit comments

Comments
 (0)