mirror of
				https://github.com/h44z/wg-portal.git
				synced 2025-11-03 23:56:18 +00:00 
			
		
		
		
	Peer interface address should match server's prefix length (#177)
This commit is contained in:
		@@ -644,7 +644,7 @@ func (m Manager) importPeer(ctx context.Context, in *domain.Interface, p *domain
 | 
			
		||||
	peer.InterfaceIdentifier = in.Identifier
 | 
			
		||||
	peer.EndpointPublicKey = domain.StringConfigOption{Value: in.PublicKey, Overridable: true}
 | 
			
		||||
	peer.AllowedIPsStr = domain.StringConfigOption{Value: in.PeerDefAllowedIPsStr, Overridable: true}
 | 
			
		||||
	peer.Interface.Addresses = p.AllowedIPs // use allowed IP's as the peer IP's
 | 
			
		||||
	peer.Interface.Addresses = p.AllowedIPs // use allowed IP's as the peer IP's TODO: Should this also match server interface address' prefix length?
 | 
			
		||||
	peer.Interface.DnsStr = domain.StringConfigOption{Value: in.PeerDefDnsStr, Overridable: true}
 | 
			
		||||
	peer.Interface.DnsSearchStr = domain.StringConfigOption{Value: in.PeerDefDnsSearchStr, Overridable: true}
 | 
			
		||||
	peer.Interface.Mtu = domain.IntConfigOption{Value: in.PeerDefMtu, Overridable: true}
 | 
			
		||||
 
 | 
			
		||||
@@ -310,8 +310,9 @@ func (m Manager) getFreshPeerIpConfig(ctx context.Context, iface *domain.Interfa
 | 
			
		||||
		for {
 | 
			
		||||
			ipConflict := false
 | 
			
		||||
			for _, usedIp := range existingIps[network] {
 | 
			
		||||
				if usedIp == ip {
 | 
			
		||||
				if usedIp.Addr == ip.Addr {
 | 
			
		||||
					ipConflict = true
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
@@ -326,7 +327,7 @@ func (m Manager) getFreshPeerIpConfig(ctx context.Context, iface *domain.Interfa
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		ips = append(ips, ip.HostAddr())
 | 
			
		||||
		ips = append(ips, ip)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return
 | 
			
		||||
 
 | 
			
		||||
@@ -103,7 +103,9 @@ func (i *Interface) GetAllowedIPs(peers []Peer) []Cidr {
 | 
			
		||||
	var allowedCidrs []Cidr
 | 
			
		||||
 | 
			
		||||
	for _, peer := range peers {
 | 
			
		||||
		allowedCidrs = append(allowedCidrs, peer.Interface.Addresses...)
 | 
			
		||||
		for _, ip := range peer.Interface.Addresses {
 | 
			
		||||
			allowedCidrs = append(allowedCidrs, ip.HostAddr())
 | 
			
		||||
		}
 | 
			
		||||
		if peer.ExtraAllowedIPsStr != "" {
 | 
			
		||||
			extraIPs, err := CidrsFromString(peer.ExtraAllowedIPsStr)
 | 
			
		||||
			if err == nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -228,7 +228,10 @@ func MergeToPhysicalPeer(pp *PhysicalPeer, p *Peer) {
 | 
			
		||||
		extraAllowedIPs, _ := CidrsFromString(p.ExtraAllowedIPsStr)
 | 
			
		||||
		pp.AllowedIPs = append(allowedIPs, extraAllowedIPs...)
 | 
			
		||||
	} else {
 | 
			
		||||
		allowedIPs := p.Interface.Addresses
 | 
			
		||||
		allowedIPs := make([]Cidr, len(p.Interface.Addresses))
 | 
			
		||||
		for i, ip := range p.Interface.Addresses {
 | 
			
		||||
			allowedIPs[i] = ip.HostAddr()
 | 
			
		||||
		}
 | 
			
		||||
		extraAllowedIPs, _ := CidrsFromString(p.ExtraAllowedIPsStr)
 | 
			
		||||
		pp.AllowedIPs = append(allowedIPs, extraAllowedIPs...)
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user