diff --git a/internal/server/configuration.go b/internal/server/configuration.go index 3b013d1..762765d 100644 --- a/internal/server/configuration.go +++ b/internal/server/configuration.go @@ -66,6 +66,7 @@ AdminPassword string `yaml:"adminPass" envconfig:"ADMIN_PASS"` EditableKeys bool `yaml:"editableKeys" envconfig:"EDITABLE_KEYS"` CreateDefaultPeer bool `yaml:"createDefaultPeer" envconfig:"CREATE_DEFAULT_PEER"` + DefaultPeerNames string `yaml:"defaultPeerNames" envconfig:"DEFAULT_PEER_NAMES"` SelfProvisioningAllowed bool `yaml:"selfProvisioning" envconfig:"SELF_PROVISIONING"` WGExoprterFriendlyNames bool `yaml:"wgExporterFriendlyNames" envconfig:"WG_EXPORTER_FRIENDLY_NAMES"` LdapEnabled bool `yaml:"ldapEnabled" envconfig:"LDAP_ENABLED"` @@ -90,6 +91,8 @@ cfg.Core.MailFrom = "WireGuard VPN " cfg.Core.AdminUser = "admin@wgportal.local" cfg.Core.AdminPassword = "wgportal" + cfg.Core.CreateDefaultPeer = true + cfg.Core.DefaultPeerNames = "Default" cfg.Core.LdapEnabled = false cfg.Core.EditableKeys = true cfg.Core.WGExoprterFriendlyNames = false diff --git a/internal/server/server_helper.go b/internal/server/server_helper.go index 0ffd50c..1b433f2 100644 --- a/internal/server/server_helper.go +++ b/internal/server/server_helper.go @@ -3,6 +3,7 @@ import ( "crypto/md5" "fmt" + "strings" "io/ioutil" "path" "syscall" @@ -332,20 +333,23 @@ } // Create default vpn peer - peer, err := s.PrepareNewPeer(device) - if err != nil { - return errors.WithMessage(err, "failed to prepare new peer") - } - peer.Email = email - if existingUser.Firstname != "" && existingUser.Lastname != "" { - peer.Identifier = fmt.Sprintf("%s %s (%s)", existingUser.Firstname, existingUser.Lastname, "Default") - } else { - peer.Identifier = fmt.Sprintf("%s (%s)", existingUser.Email, "Default") - } - peer.CreatedBy = existingUser.Email - peer.UpdatedBy = existingUser.Email - if err := s.CreatePeer(device, peer); err != nil { - return errors.WithMessagef(err, "failed to automatically create vpn peer for %s", email) + defaultPeerNames := strings.Split(s.config.Core.DefaultPeerNames, ",") + for _, peerName := range defaultPeerNames { + peer, err := s.PrepareNewPeer(device) + if err != nil { + return errors.WithMessage(err, "failed to prepare new peer") + } + peer.Email = email + if existingUser.Firstname != "" && existingUser.Lastname != "" { + peer.Identifier = fmt.Sprintf("%s %s (%s)", existingUser.Firstname, existingUser.Lastname, peerName) + } else { + peer.Identifier = fmt.Sprintf("%s (%s)", existingUser.Email, peerName) + } + peer.CreatedBy = existingUser.Email + peer.UpdatedBy = existingUser.Email + if err := s.CreatePeer(device, peer); err != nil { + return errors.WithMessagef(err, "failed to automatically create vpn peer for %s", email) + } } return nil