create default peers for newly created interfaces (#666)

This commit is contained in:
Christoph Haas
2026-04-16 20:52:06 +02:00
parent 51e4c0ebf1
commit 274affb17e
15 changed files with 284 additions and 66 deletions

View File

@@ -240,6 +240,18 @@ func (i *Interface) GetRoutingTable() int {
}
}
// CreateDefaultPeers determines whether default peers should be created for this interface.
func (i *Interface) CreateDefaultPeers() bool {
if !i.CreateDefaultPeer {
return false // only create default peers if the interface flag is set
}
if i.Type != InterfaceTypeServer {
return false // only create default peers for server interfaces
}
return true
}
type PhysicalInterface struct {
Identifier InterfaceIdentifier // device name, for example: wg0
KeyPair // private/public Key of the server interface

View File

@@ -139,3 +139,29 @@ func TestInterface_GetRoutingTableNonLocal(t *testing.T) {
iface.RoutingTable = "abc"
assert.Equal(t, 0, iface.GetRoutingTable())
}
func TestInterface_CreateDefaultPeers(t *testing.T) {
iface := &Interface{}
assert.False(t, iface.CreateDefaultPeers())
iface.CreateDefaultPeer = true
assert.False(t, iface.CreateDefaultPeers()) // still wrong type
iface2 := &Interface{Type: InterfaceTypeServer}
assert.False(t, iface2.CreateDefaultPeers()) // CreateDefaultPeer flag is false
iface2.CreateDefaultPeer = true
assert.True(t, iface2.CreateDefaultPeers())
iface3 := &Interface{Type: InterfaceTypeClient}
assert.False(t, iface3.CreateDefaultPeers())
iface3.CreateDefaultPeer = true
assert.False(t, iface3.CreateDefaultPeers())
iface4 := &Interface{Type: InterfaceTypeAny}
assert.False(t, iface4.CreateDefaultPeers())
iface4.CreateDefaultPeer = true
assert.False(t, iface4.CreateDefaultPeers())
}

View File

@@ -270,6 +270,18 @@ func (u *User) DisplayName() string {
return displayName
}
// CreateDefaultPeers determines whether default peers should be created for this user.
func (u *User) CreateDefaultPeers() bool {
if u.IsDisabled() {
return false
}
if u.IsLocked() {
return false
}
return true
}
// region webauthn
func (u *User) WebAuthnID() []byte {

View File

@@ -145,3 +145,17 @@ func TestUser_HashPassword(t *testing.T) {
user.Password = ""
assert.NoError(t, user.HashPassword())
}
func TestUser_CreateDefaultPeers(t *testing.T) {
user := &User{}
assert.True(t, user.CreateDefaultPeers())
user2 := &User{Disabled: &time.Time{}}
assert.False(t, user2.CreateDefaultPeers())
user3 := &User{Locked: &time.Time{}}
assert.False(t, user3.CreateDefaultPeers())
user4 := &User{Disabled: &time.Time{}, Locked: &time.Time{}}
assert.False(t, user4.CreateDefaultPeers())
}