revise possible statuses

This commit is contained in:
Callan Bryant 2020-03-20 23:09:01 +00:00
parent 1e046a20a1
commit c95e225de8
No known key found for this signature in database
GPG Key ID: C31FA9DF3ACBFFAA
2 changed files with 10 additions and 15 deletions

View File

@ -14,31 +14,28 @@ import (
type Status int type Status int
const ( const (
StatusUnknown = iota
// Host has not been loaded into wireguard yet // Host has not been loaded into wireguard yet
StatusSyncRequired StatusUnknown = iota
// No handshake in 3 minutes // No handshake in 3 minutes
StatusOffline StatusOffline
// Handshake in 3 minutes // Handshake in 3 minutes
StatusOnline StatusOnline
// Host has not connected for 28 days and may be removed // Host has not connected for 28 days and may be removed
StatusExpired StatusDormant
) )
// TODO pending/unknown
func (s Status) String() string { func (s Status) String() string {
switch s { switch s {
case StatusSyncRequired: case StatusUnknown:
return "syncrequired" return "unknown"
case StatusOffline: case StatusOffline:
return "offline" return "offline"
case StatusOnline: case StatusOnline:
return "online" return "online"
case StatusExpired: case StatusDormant:
return "expired" return "dormant"
default: default:
return "unknown" return "";
} }
} }
@ -86,14 +83,12 @@ func GenerateReport(dev *wgtypes.Device, conf *DsnetConfig, oldReport *DsnetRepo
status := Status(StatusUnknown) status := Status(StatusUnknown)
if !known { if !known {
status = StatusSyncRequired status = StatusUnknown
} else if time.Since(wgPeer.LastHandshakeTime) < TIMEOUT { } else if time.Since(wgPeer.LastHandshakeTime) < TIMEOUT {
status = StatusOnline status = StatusOnline
peersOnline += 1 peersOnline += 1
// TODO same test but with rx byte data from last report (otherwise
// peer can fake online status by disabling handshake)
} else if !wgPeer.LastHandshakeTime.IsZero() && time.Since(wgPeer.LastHandshakeTime) > EXPIRY { } else if !wgPeer.LastHandshakeTime.IsZero() && time.Since(wgPeer.LastHandshakeTime) > EXPIRY {
status = StatusExpired status = StatusDormant
} else { } else {
status = StatusOffline status = StatusOffline
} }