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

@ -20,7 +20,7 @@ type PeerConfig struct {
// Description of what the host is and/or does
Description string `validate:"required,gte=1,lte=255"`
// Internal VPN IP address. Added to AllowedIPs in server config as a /32
IP net.IP `validate:"required`
IP net.IP `validate:"required`
Added time.Time `validate:"required"`
// TODO ExternalIP support (Endpoint)
//ExternalIP net.UDPAddr `validate:"required,udp4_addr"`

View File

@ -14,31 +14,28 @@ import (
type Status int
const (
StatusUnknown = iota
// Host has not been loaded into wireguard yet
StatusSyncRequired
StatusUnknown = iota
// No handshake in 3 minutes
StatusOffline
// Handshake in 3 minutes
StatusOnline
// Host has not connected for 28 days and may be removed
StatusExpired
StatusDormant
)
// TODO pending/unknown
func (s Status) String() string {
switch s {
case StatusSyncRequired:
return "syncrequired"
case StatusUnknown:
return "unknown"
case StatusOffline:
return "offline"
case StatusOnline:
return "online"
case StatusExpired:
return "expired"
case StatusDormant:
return "dormant"
default:
return "unknown"
return "";
}
}
@ -86,14 +83,12 @@ func GenerateReport(dev *wgtypes.Device, conf *DsnetConfig, oldReport *DsnetRepo
status := Status(StatusUnknown)
if !known {
status = StatusSyncRequired
status = StatusUnknown
} else if time.Since(wgPeer.LastHandshakeTime) < TIMEOUT {
status = StatusOnline
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 {
status = StatusExpired
status = StatusDormant
} else {
status = StatusOffline
}