From 66fffd69ced2e5080b3a8dc22c5422b792d9289f Mon Sep 17 00:00:00 2001
From: Juan Font Alonso <juanfontalonso@gmail.com>
Date: Thu, 16 Jun 2022 18:43:50 +0200
Subject: [PATCH] Send Online field of tailcfg.Node based on LastSeen

---
 machine.go | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/machine.go b/machine.go
index c227645..cf6b887 100644
--- a/machine.go
+++ b/machine.go
@@ -637,6 +637,10 @@ func (machine Machine) toNode(
 
 	hostInfo := machine.GetHostInfo()
 
+	// A node is Online if it is connected to the control server,
+	// and we now we update LastSeen every keepAliveInterval duration at least.
+	online := machine.LastSeen.After(time.Now().Add(-keepAliveInterval))
+
 	node := tailcfg.Node{
 		ID: tailcfg.NodeID(machine.ID), // this is the actual ID
 		StableID: tailcfg.StableNodeID(
@@ -653,6 +657,7 @@ func (machine Machine) toNode(
 		Endpoints:  machine.Endpoints,
 		DERP:       derp,
 
+		Online:   &online,
 		Hostinfo: hostInfo.View(),
 		Created:  machine.CreatedAt,
 		LastSeen: machine.LastSeen,