Audit changes
This commit is contained in:
@@ -27,6 +27,8 @@ func DB(err error) error {
|
|||||||
switch se.ExtendedCode {
|
switch se.ExtendedCode {
|
||||||
case sqlite3.ErrConstraintUnique, sqlite3.ErrConstraintPrimaryKey:
|
case sqlite3.ErrConstraintUnique, sqlite3.ErrConstraintPrimaryKey:
|
||||||
return ErrAlreadyExists
|
return ErrAlreadyExists
|
||||||
|
case sqlite3.ErrConstraintForeignKey, sqlite3.ErrConstraintCheck:
|
||||||
|
return ErrConstraint
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ var (
|
|||||||
ErrInvalidNetName = BadRequest.WithMsg("Invalid network name.")
|
ErrInvalidNetName = BadRequest.WithMsg("Invalid network name.")
|
||||||
ErrNetNameNotLocal = BadRequest.WithMsg("Network name must end with .local.")
|
ErrNetNameNotLocal = BadRequest.WithMsg("Network name must end with .local.")
|
||||||
ErrInvalidPeerName = BadRequest.WithMsg("Invalid peer name.")
|
ErrInvalidPeerName = BadRequest.WithMsg("Invalid peer name.")
|
||||||
|
ErrConstraint = BadRequest.WithMsg("Constraint error.")
|
||||||
)
|
)
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -12,15 +12,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func Receiver(selfVPNIP netip.Addr, ch chan<- Packet) {
|
func Receiver(selfVPNIP netip.Addr, ch chan<- Packet) {
|
||||||
limiters := make([]*ratelimiter.Limiter, 256)
|
limiters := map[netip.Addr]*ratelimiter.Limiter{}
|
||||||
for i := range limiters {
|
|
||||||
limiters[i] = ratelimiter.New(ratelimiter.Config{
|
|
||||||
BurstLimit: 1,
|
|
||||||
FillPeriod: broadcastInterval / 2,
|
|
||||||
MaxWaitCount: 0,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
for {
|
for {
|
||||||
if err := receiver(selfVPNIP, limiters, ch); err != nil {
|
if err := receiver(selfVPNIP, limiters, ch); err != nil {
|
||||||
log.Printf("[MCReader] %v", err)
|
log.Printf("[MCReader] %v", err)
|
||||||
@@ -29,7 +21,7 @@ func Receiver(selfVPNIP netip.Addr, ch chan<- Packet) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func receiver(selfVPNIP netip.Addr, limiters []*ratelimiter.Limiter, ch chan<- Packet) error {
|
func receiver(selfVPNIP netip.Addr, limiters map[netip.Addr]*ratelimiter.Limiter, ch chan<- Packet) error {
|
||||||
selfIP := selfVPNIP.As4()[3]
|
selfIP := selfVPNIP.As4()[3]
|
||||||
|
|
||||||
addr := multicastAddr(selfVPNIP)
|
addr := multicastAddr(selfVPNIP)
|
||||||
@@ -69,7 +61,18 @@ func receiver(selfVPNIP netip.Addr, limiters []*ratelimiter.Limiter, ch chan<- P
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := limiters[packet.PeerIP].Limit(); err != nil {
|
srcAddr := src.Addr().Unmap()
|
||||||
|
lim, ok := limiters[srcAddr]
|
||||||
|
if !ok {
|
||||||
|
lim = ratelimiter.New(ratelimiter.Config{
|
||||||
|
BurstLimit: 1,
|
||||||
|
FillPeriod: broadcastInterval / 2,
|
||||||
|
MaxWaitCount: 0,
|
||||||
|
})
|
||||||
|
limiters[srcAddr] = lim
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := lim.Limit(); err != nil {
|
||||||
log.Printf("Rate limited packet from peer IP %d.", packet.PeerIP)
|
log.Printf("Rate limited packet from peer IP %d.", packet.PeerIP)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user