Compare commits

...

2 Commits

Author SHA1 Message Date
Nagy Károly Gábriel 5ca8c7b940 cluster: fix wg1.conf generator
Signed-off-by: Nagy Károly Gábriel <k@jpi.io>
2024-07-25 21:42:46 +03:00
amery 01ef75a020 cluster: fix wg0.conf generator
Signed-off-by: Alejandro Mery <amery@jpi.io>
2024-07-24 17:30:10 +00:00
+15 -1
View File
@@ -6,6 +6,7 @@ import (
"net/netip" "net/netip"
"strconv" "strconv"
"darvaza.org/core"
"git.jpi.io/amery/jpictl/pkg/rings" "git.jpi.io/amery/jpictl/pkg/rings"
"git.jpi.io/amery/jpictl/pkg/wireguard" "git.jpi.io/amery/jpictl/pkg/wireguard"
) )
@@ -202,7 +203,7 @@ func (r *Ring) AddPeer(p *Machine) bool {
} }
switch { switch {
case r.ID == 0: case r.ID == rings.RingZeroID:
r.setRingZeroAllowedIPs(rp) r.setRingZeroAllowedIPs(rp)
case p.IsGateway(): case p.IsGateway():
r.setRingOneGatewayAllowedIPs(rp) r.setRingOneGatewayAllowedIPs(rp)
@@ -225,13 +226,21 @@ func (r *Ring) setRingZeroAllowedIPs(rp *RingPeer) {
rp.AllowCIDR(rp.Address, 32) rp.AllowCIDR(rp.Address, 32)
} }
// revive:disable:cognitive-complexity
func (r *Ring) setRingOneGatewayAllowedIPs(rp *RingPeer) { func (r *Ring) setRingOneGatewayAllowedIPs(rp *RingPeer) {
// revive:enable:cognitive-complexity
regionID, zoneID, _, _ := r.Decode(rp.Address) regionID, zoneID, _, _ := r.Decode(rp.Address)
// peer // peer
rp.AllowCIDR(rp.Address, 32) rp.AllowCIDR(rp.Address, 32)
// ring1 gateways connect to all other ring1 networks // ring1 gateways connect to all other ring1 networks
m, ok := r.ZoneIterator.(RegionIterator)
if !ok {
panic("Cannot iterate Region from Zone")
}
m.ForEachRegion(func(r2 *Region) bool {
if r2.IsPrimary() {
r.ForEachZone(func(z *Zone) bool { r.ForEachZone(func(z *Zone) bool {
if !z.Is(regionID, zoneID) { if !z.Is(regionID, zoneID) {
subnet := z.RingOnePrefix() subnet := z.RingOnePrefix()
@@ -239,6 +248,9 @@ func (r *Ring) setRingOneGatewayAllowedIPs(rp *RingPeer) {
} }
return false return false
}) })
}
return false
})
// ring1 gateways also connect to all ring0 addresses // ring1 gateways also connect to all ring0 addresses
r.ForEachZone(func(z *Zone) bool { r.ForEachZone(func(z *Zone) bool {
@@ -316,8 +328,10 @@ func (rp *RingPeer) AllowCIDR(addr netip.Addr, bits int) {
// AllowSubnet allows an IP range via this peer // AllowSubnet allows an IP range via this peer
func (rp *RingPeer) AllowSubnet(subnet netip.Prefix) { func (rp *RingPeer) AllowSubnet(subnet netip.Prefix) {
if !core.SliceContains(rp.PeerConfig.AllowedIPs, subnet) {
rp.PeerConfig.AllowedIPs = append(rp.PeerConfig.AllowedIPs, subnet) rp.PeerConfig.AllowedIPs = append(rp.PeerConfig.AllowedIPs, subnet)
} }
}
// NewRing composes a new Ring for Wireguard setup // NewRing composes a new Ring for Wireguard setup
func NewRing(z ZoneIterator, m MachineIterator, ringID rings.RingID) (*Ring, error) { func NewRing(z ZoneIterator, m MachineIterator, ringID rings.RingID) (*Ring, error) {