mirror of
https://github.com/h44z/wg-portal.git
synced 2025-10-04 15:36:18 +00:00
Merge branch 'refs/heads/master' into mikrotik_integration
# Conflicts: # internal/app/wireguard/wireguard_peers.go
This commit is contained in:
@@ -207,7 +207,8 @@ func (m Manager) CreatePeer(ctx context.Context, peer *domain.Peer) (*domain.Pee
|
||||
"user", peer.UserIdentifier,
|
||||
"current_count", peerCount,
|
||||
"allowed_count", totalAllowedPeers)
|
||||
return nil, fmt.Errorf("peer limit reached (%d peers allowed): %w", totalAllowedPeers, domain.ErrNoPermission)
|
||||
return nil, fmt.Errorf("peer limit reached (%d peers allowed): %w", totalAllowedPeers,
|
||||
domain.ErrNoPermission)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -256,7 +257,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)
|
||||
@@ -265,27 +266,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