revise possible statuses
This commit is contained in:
parent
1e046a20a1
commit
c95e225de8
@ -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"`
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user