Skip to content

Commit ee074c5

Browse files
committed
platform: Add tailscale device name and logout
1 parent 7c60487 commit ee074c5

15 files changed

Lines changed: 299 additions & 121 deletions

File tree

adapter/platform.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ type PlatformInterface interface {
5151
LookupUser(username string) (*PlatformUser, error)
5252
LookupSFTPServer() (string, error)
5353
ReadSystemSSHHostKey() ([]byte, error)
54+
TailscaleHostname() string
5455
}
5556

5657
type PlatformUser struct {

adapter/tailscale.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ type TailscaleEndpoint interface {
66
SubscribeTailscaleStatus(ctx context.Context, fn func(*TailscaleEndpointStatus)) error
77
StartTailscalePing(ctx context.Context, peerIP string, fn func(*TailscalePingResult)) error
88
SetTailscaleExitNode(ctx context.Context, stableID string) error
9+
Logout(ctx context.Context) error
910
}
1011

1112
type TailscalePingResult struct {
@@ -25,6 +26,7 @@ type TailscaleEndpointStatus struct {
2526
Self *TailscalePeer
2627
ExitNode *TailscalePeer
2728
UserGroups []*TailscaleUserGroup
29+
KeyAuth bool
2830
}
2931

3032
type TailscaleUserGroup struct {

daemon/started_service.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1392,6 +1392,7 @@ func tailscaleEndpointStatusToProto(tag string, s *adapter.TailscaleEndpointStat
13921392
NetworkName: s.NetworkName,
13931393
MagicDNSSuffix: s.MagicDNSSuffix,
13941394
UserGroups: userGroups,
1395+
KeyAuth: s.KeyAuth,
13951396
}
13961397
if s.Self != nil {
13971398
result.Self = tailscalePeerToProto(s.Self)
@@ -1502,6 +1503,30 @@ func (s *StartedService) SetTailscaleExitNode(ctx context.Context, request *SetT
15021503
return &emptypb.Empty{}, nil
15031504
}
15041505

1506+
func (s *StartedService) TailscaleLogout(ctx context.Context, request *TailscaleLogoutRequest) (*emptypb.Empty, error) {
1507+
err := s.waitForStarted(ctx)
1508+
if err != nil {
1509+
return nil, err
1510+
}
1511+
s.serviceAccess.RLock()
1512+
boxService := s.instance
1513+
s.serviceAccess.RUnlock()
1514+
1515+
endpoint, err := resolveTailscaleEndpoint(boxService, request.EndpointTag)
1516+
if err != nil {
1517+
return nil, err
1518+
}
1519+
tsEndpoint, loaded := endpoint.(adapter.TailscaleEndpoint)
1520+
if !loaded {
1521+
return nil, status.Error(codes.FailedPrecondition, "endpoint does not support tailscale")
1522+
}
1523+
err = tsEndpoint.Logout(ctx)
1524+
if err != nil {
1525+
return nil, err
1526+
}
1527+
return &emptypb.Empty{}, nil
1528+
}
1529+
15051530
func (s *StartedService) mustEmbedUnimplementedStartedServiceServer() {
15061531
}
15071532

0 commit comments

Comments
 (0)