mirror of
https://github.com/h44z/wg-portal.git
synced 2025-10-04 15:36:18 +00:00
fix multi-peer generation, fix prefix handling (#491)
(cherry picked from commit c20f17cddf
)
This commit is contained in:
@@ -233,7 +233,7 @@ func (m Manager) CreateMultiplePeers(
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var newPeers []*domain.Peer
|
||||
createdPeers := make([]domain.Peer, 0, len(r.UserIdentifiers))
|
||||
|
||||
for _, id := range r.UserIdentifiers {
|
||||
freshPeer, err := m.PreparePeer(ctx, interfaceId)
|
||||
@@ -242,27 +242,22 @@ func (m Manager) CreateMultiplePeers(
|
||||
}
|
||||
|
||||
freshPeer.UserIdentifier = domain.UserIdentifier(id) // use id as user identifier. peers are allowed to have invalid user identifiers
|
||||
if r.Suffix != "" {
|
||||
freshPeer.DisplayName += " " + r.Suffix
|
||||
if r.Prefix != "" {
|
||||
freshPeer.DisplayName = r.Prefix + " " + freshPeer.DisplayName
|
||||
}
|
||||
|
||||
if err := m.validatePeerCreation(ctx, nil, freshPeer); err != nil {
|
||||
return nil, fmt.Errorf("creation not allowed: %w", err)
|
||||
}
|
||||
|
||||
newPeers = append(newPeers, freshPeer)
|
||||
}
|
||||
// Save immediately to reserve the assigned IPs so the next prepared peer gets the next free IPs
|
||||
if err := m.savePeers(ctx, freshPeer); err != nil {
|
||||
return nil, fmt.Errorf("failed to create new peer %s: %w", freshPeer.Identifier, err)
|
||||
}
|
||||
|
||||
err := m.savePeers(ctx, newPeers...)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to create new peers: %w", err)
|
||||
}
|
||||
createdPeers = append(createdPeers, *freshPeer)
|
||||
|
||||
createdPeers := make([]domain.Peer, len(newPeers))
|
||||
for i := range newPeers {
|
||||
createdPeers[i] = *newPeers[i]
|
||||
|
||||
m.bus.Publish(app.TopicPeerCreated, *newPeers[i])
|
||||
m.bus.Publish(app.TopicPeerCreated, *freshPeer)
|
||||
}
|
||||
|
||||
return createdPeers, nil
|
||||
|
Reference in New Issue
Block a user