diff --git a/assets/tpl/admin_edit_client.html b/assets/tpl/admin_edit_client.html index 97b8a04..c8ab89a 100644 --- a/assets/tpl/admin_edit_client.html +++ b/assets/tpl/admin_edit_client.html @@ -82,6 +82,12 @@ +
+
+ + +
+
diff --git a/internal/common/db.go b/internal/common/db.go index fcbb367..d8122be 100644 --- a/internal/common/db.go +++ b/internal/common/db.go @@ -29,6 +29,13 @@ func init() { return nil }, }) + migrations = append(migrations, Migration{ + version: "1.0.8", + migrateFn: func(db *gorm.DB) error { + logrus.Infof("upgraded database format to version 1.0.8") + return nil + }, + }) } type SupportedDatabase string diff --git a/internal/server/handlers_peer.go b/internal/server/handlers_peer.go index 0112100..d1a3679 100644 --- a/internal/server/handlers_peer.go +++ b/internal/server/handlers_peer.go @@ -64,6 +64,7 @@ func (s *Server) PostAdminEditPeer(c *gin.Context) { // Clean list input formPeer.IPsStr = common.ListToString(common.ParseStringList(formPeer.IPsStr)) formPeer.AllowedIPsStr = common.ListToString(common.ParseStringList(formPeer.AllowedIPsStr)) + formPeer.AllowedIPsSrvStr = common.ListToString(common.ParseStringList(formPeer.AllowedIPsSrvStr)) disabled := c.PostForm("isdisabled") != "" now := time.Now() @@ -121,6 +122,7 @@ func (s *Server) PostAdminCreatePeer(c *gin.Context) { // Clean list input formPeer.IPsStr = common.ListToString(common.ParseStringList(formPeer.IPsStr)) formPeer.AllowedIPsStr = common.ListToString(common.ParseStringList(formPeer.AllowedIPsStr)) + formPeer.AllowedIPsSrvStr = common.ListToString(common.ParseStringList(formPeer.AllowedIPsSrvStr)) disabled := c.PostForm("isdisabled") != "" now := time.Now() diff --git a/internal/server/version.go b/internal/server/version.go index e91e867..a1b0048 100644 --- a/internal/server/version.go +++ b/internal/server/version.go @@ -1,4 +1,4 @@ package server var Version = "testbuild" -var DatabaseVersion = "1.0.7" +var DatabaseVersion = "1.0.8" diff --git a/internal/wireguard/peermanager.go b/internal/wireguard/peermanager.go index 21b9beb..1ca27e4 100644 --- a/internal/wireguard/peermanager.go +++ b/internal/wireguard/peermanager.go @@ -81,7 +81,8 @@ type Peer struct { // Core WireGuard Settings PublicKey string `gorm:"primaryKey" form:"pubkey" binding:"required,base64"` // the public key of the peer itself PresharedKey string `form:"presharedkey" binding:"omitempty,base64"` - AllowedIPsStr string `form:"allowedip" binding:"cidrlist"` // a comma separated list of IPs that are used in the client config file + AllowedIPsStr string `form:"allowedip" binding:"cidrlist"` // a comma separated list of IPs that are used in the client config file + AllowedIPsSrvStr string `form:"allowedipSrv" binding:"cidrlist"` // a comma separated list of IPs that are used in the server config file Endpoint string `form:"endpoint" binding:"omitempty,hostname_port"` PersistentKeepalive int `form:"keepalive" binding:"gte=0"` @@ -123,6 +124,10 @@ func (p Peer) GetAllowedIPs() []string { return common.ParseStringList(p.AllowedIPsStr) } +func (p Peer) GetAllowedIPsSrv() []string { + return common.ParseStringList(p.AllowedIPsSrvStr) +} + func (p Peer) GetConfig(dev *Device) wgtypes.PeerConfig { publicKey, _ := wgtypes.ParseKey(p.PublicKey) @@ -153,6 +158,7 @@ func (p Peer) GetConfig(dev *Device) wgtypes.PeerConfig { peerAllowedIPs = p.GetAllowedIPs() case DeviceTypeServer: peerAllowedIPs = p.GetIPAddresses() + peerAllowedIPs = append(peerAllowedIPs, p.GetAllowedIPsSrv()...) } for _, ip := range peerAllowedIPs { _, ipNet, err := net.ParseCIDR(ip) diff --git a/internal/wireguard/tpl/interface.tpl b/internal/wireguard/tpl/interface.tpl index 318e2b7..9662a5a 100644 --- a/internal/wireguard/tpl/interface.tpl +++ b/internal/wireguard/tpl/interface.tpl @@ -61,7 +61,7 @@ PublicKey = {{ .PublicKey }} PresharedKey = {{ .PresharedKey }} {{- end}} {{- if eq $.Interface.Type "server"}} -AllowedIPs = {{ .IPsStr }} +AllowedIPs = {{ .IPsStr }}{{if ne .AllowedIPsSrvStr ""}}, {{ .AllowedIPsSrvStr }}{{end}} {{- end}} {{- if eq $.Interface.Type "client"}} {{- if .AllowedIPsStr}}