mirror of
https://github.com/netbirdio/netbird.git
synced 2025-08-02 12:43:10 +02:00
This PR introduces a new inactivity package responsible for monitoring peer activity and notifying when peers become inactive. Introduces a new Signal message type to close the peer connection after the idle timeout is reached. Periodically checks the last activity of registered peers via a Bind interface. Notifies via a channel when peers exceed a configurable inactivity threshold. Default settings DefaultInactivityThreshold is set to 15 minutes, with a minimum allowed threshold of 1 minute. Limitations This inactivity check does not support kernel WireGuard integration. In kernel–user space communication, the user space side will always be responsible for closing the connection.
24 lines
678 B
Go
24 lines
678 B
Go
package device
|
|
|
|
import (
|
|
"net"
|
|
"net/netip"
|
|
"time"
|
|
|
|
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
|
|
|
|
"github.com/netbirdio/netbird/client/iface/configurer"
|
|
)
|
|
|
|
type WGConfigurer interface {
|
|
ConfigureInterface(privateKey string, port int) error
|
|
UpdatePeer(peerKey string, allowedIps []netip.Prefix, keepAlive time.Duration, endpoint *net.UDPAddr, preSharedKey *wgtypes.Key) error
|
|
RemovePeer(peerKey string) error
|
|
AddAllowedIP(peerKey string, allowedIP netip.Prefix) error
|
|
RemoveAllowedIP(peerKey string, allowedIP netip.Prefix) error
|
|
Close()
|
|
GetStats() (map[string]configurer.WGStats, error)
|
|
FullStats() (*configurer.Stats, error)
|
|
LastActivities() map[string]time.Time
|
|
}
|