migrate peer database
This commit is contained in:
parent
f4edc55851
commit
f95c692aed
|
@ -98,7 +98,7 @@ func (s *Server) PostLogin(c *gin.Context) {
|
||||||
Firstname: userData.Firstname,
|
Firstname: userData.Firstname,
|
||||||
Lastname: userData.Lastname,
|
Lastname: userData.Lastname,
|
||||||
Phone: userData.Phone,
|
Phone: userData.Phone,
|
||||||
}, s.wg.Cfg.DefaultDeviceName); err != nil {
|
}, s.wg.Cfg.GetDefaultDeviceName()); err != nil {
|
||||||
s.GetHandleError(c, http.StatusInternalServerError, "login error", "failed to update user data")
|
s.GetHandleError(c, http.StatusInternalServerError, "login error", "failed to update user data")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -124,7 +124,7 @@ func (s *Server) PostLogin(c *gin.Context) {
|
||||||
sessionData.DeviceName = s.wg.Cfg.DeviceNames[0]
|
sessionData.DeviceName = s.wg.Cfg.DeviceNames[0]
|
||||||
|
|
||||||
// Check if user already has a peer setup, if not create one
|
// Check if user already has a peer setup, if not create one
|
||||||
if err := s.CreateUserDefaultPeer(user.Email, s.wg.Cfg.DefaultDeviceName); err != nil {
|
if err := s.CreateUserDefaultPeer(user.Email, s.wg.Cfg.GetDefaultDeviceName()); err != nil {
|
||||||
// Not a fatal error, just log it...
|
// Not a fatal error, just log it...
|
||||||
logrus.Errorf("failed to automatically create vpn peer for %s: %v", sessionData.Email, err)
|
logrus.Errorf("failed to automatically create vpn peer for %s: %v", sessionData.Email, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,17 @@
|
||||||
package wireguard
|
package wireguard
|
||||||
|
|
||||||
|
import "github.com/h44z/wg-portal/internal/common"
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
DeviceNames []string `yaml:"devices" envconfig:"WG_DEVICES"` // managed devices
|
DeviceNames []string `yaml:"devices" envconfig:"WG_DEVICES"` // managed devices
|
||||||
DefaultDeviceName string `yaml:"devices" envconfig:"WG_DEFAULT_DEVICE"` // this device is used for auto-created peers
|
DefaultDeviceName string `yaml:"devices" envconfig:"WG_DEFAULT_DEVICE"` // this device is used for auto-created peers, use GetDefaultDeviceName() to access this field
|
||||||
ConfigDirectoryPath string `yaml:"configDirectory" envconfig:"WG_CONFIG_PATH"` // optional, if set, updates will be written to this path, filename: <devicename>.conf
|
ConfigDirectoryPath string `yaml:"configDirectory" envconfig:"WG_CONFIG_PATH"` // optional, if set, updates will be written to this path, filename: <devicename>.conf
|
||||||
ManageIPAddresses bool `yaml:"manageIPAddresses" envconfig:"MANAGE_IPS"` // handle ip-address setup of interface
|
ManageIPAddresses bool `yaml:"manageIPAddresses" envconfig:"MANAGE_IPS"` // handle ip-address setup of interface
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c Config) GetDefaultDeviceName() string {
|
||||||
|
if c.DefaultDeviceName == "" || !common.ListContains(c.DeviceNames, c.DefaultDeviceName) {
|
||||||
|
return c.DeviceNames[0]
|
||||||
|
}
|
||||||
|
return c.DefaultDeviceName
|
||||||
|
}
|
||||||
|
|
|
@ -274,13 +274,23 @@ type PeerManager struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPeerManager(db *gorm.DB, wg *Manager) (*PeerManager, error) {
|
func NewPeerManager(db *gorm.DB, wg *Manager) (*PeerManager, error) {
|
||||||
um := &PeerManager{db: db, wg: wg}
|
pm := &PeerManager{db: db, wg: wg}
|
||||||
|
|
||||||
if err := um.db.AutoMigrate(&Peer{}, &Device{}); err != nil {
|
if err := pm.db.AutoMigrate(&Peer{}, &Device{}); err != nil {
|
||||||
return nil, errors.WithMessage(err, "failed to migrate peer database")
|
return nil, errors.WithMessage(err, "failed to migrate peer database")
|
||||||
}
|
}
|
||||||
|
|
||||||
return um, nil
|
// check if peers without device name exist (from version <= 1.0.3), if so assign them to the default device.
|
||||||
|
peers := make([]Peer, 0)
|
||||||
|
pm.db.Find(&peers)
|
||||||
|
for i := range peers {
|
||||||
|
if peers[i].DeviceName == "" {
|
||||||
|
peers[i].DeviceName = wg.Cfg.GetDefaultDeviceName()
|
||||||
|
pm.db.Save(&peers[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pm, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitFromPhysicalInterface read all WireGuard peers from the WireGuard interface configuration. If a peer does not
|
// InitFromPhysicalInterface read all WireGuard peers from the WireGuard interface configuration. If a peer does not
|
||||||
|
|
Loading…
Reference in New Issue