mirror of
https://github.com/h44z/wg-portal.git
synced 2026-04-17 21:16:23 +00:00
Improved default peer handling (#674)
* create default peers for newly created interfaces (#666) * allow to manually create default peers for an interface (#666)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user