mirror of
https://github.com/h44z/wg-portal.git
synced 2025-08-25 14:31:14 +00:00
ip and mtu updates (linux only)
This commit is contained in:
@@ -82,8 +82,24 @@ func (s *Server) PostAdminEditInterface(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// Update interface IP address
|
||||
if s.config.WG.ManageIPAddresses {
|
||||
if err := s.wg.SetIPAddress(formDevice.IPs); err != nil {
|
||||
_ = s.updateFormInSession(c, formDevice)
|
||||
s.setFlashMessage(c, "Failed to update ip address: "+err.Error(), "danger")
|
||||
c.Redirect(http.StatusSeeOther, "/admin/device/edit?formerr=update")
|
||||
}
|
||||
if err := s.wg.SetMTU(formDevice.Mtu); err != nil {
|
||||
_ = s.updateFormInSession(c, formDevice)
|
||||
s.setFlashMessage(c, "Failed to update MTU: "+err.Error(), "danger")
|
||||
c.Redirect(http.StatusSeeOther, "/admin/device/edit?formerr=update")
|
||||
}
|
||||
}
|
||||
|
||||
s.setFlashMessage(c, "Changes applied successfully!", "success")
|
||||
s.setFlashMessage(c, "WireGuard must be restarted to apply ip changes.", "warning")
|
||||
if !s.config.WG.ManageIPAddresses {
|
||||
s.setFlashMessage(c, "WireGuard must be restarted to apply ip changes.", "warning")
|
||||
}
|
||||
c.Redirect(http.StatusSeeOther, "/admin/device/edit")
|
||||
}
|
||||
|
||||
|
@@ -319,6 +319,18 @@ func (u *UserManager) InitFromCurrentInterface() error {
|
||||
log.Errorf("failed to init user-manager from device: %v", err)
|
||||
return err
|
||||
}
|
||||
var ipAddresses []string
|
||||
var mtu int
|
||||
if u.wg.Cfg.ManageIPAddresses {
|
||||
if ipAddresses, err = u.wg.GetIPAddress(); err != nil {
|
||||
log.Errorf("failed to init user-manager from device: %v", err)
|
||||
return err
|
||||
}
|
||||
if mtu, err = u.wg.GetMTU(); err != nil {
|
||||
log.Errorf("failed to init user-manager from device: %v", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// Check if entries already exist in database, if not create them
|
||||
for _, peer := range peers {
|
||||
@@ -326,7 +338,7 @@ func (u *UserManager) InitFromCurrentInterface() error {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if err := u.validateOrCreateDevice(*device); err != nil {
|
||||
if err := u.validateOrCreateDevice(*device, ipAddresses, mtu); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -366,7 +378,7 @@ func (u *UserManager) validateOrCreateUserForPeer(peer wgtypes.Peer) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (u *UserManager) validateOrCreateDevice(dev wgtypes.Device) error {
|
||||
func (u *UserManager) validateOrCreateDevice(dev wgtypes.Device, ipAddresses []string, mtu int) error {
|
||||
device := Device{}
|
||||
u.db.Where("device_name = ?", dev.Name).FirstOrInit(&device)
|
||||
|
||||
@@ -377,6 +389,8 @@ func (u *UserManager) validateOrCreateDevice(dev wgtypes.Device) error {
|
||||
device.ListenPort = dev.ListenPort
|
||||
device.Mtu = 0
|
||||
device.PersistentKeepalive = 16 // Default
|
||||
device.IPsStr = strings.Join(ipAddresses, ", ")
|
||||
device.Mtu = mtu
|
||||
|
||||
res := u.db.Create(&device)
|
||||
if res.Error != nil {
|
||||
|
Reference in New Issue
Block a user