mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-10-14 00:59:33 +00:00
Unban address after one day (#1479)
* Unban address after one day * Unban addresses one by one Co-authored-by: stasatdaglabs <39559713+stasatdaglabs@users.noreply.github.com>
This commit is contained in:
parent
b636ae234e
commit
aeb8e9d2cd
@ -5,8 +5,10 @@
|
|||||||
package addressmanager
|
package addressmanager
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/kaspanet/kaspad/util/mstime"
|
||||||
"net"
|
"net"
|
||||||
"sync"
|
"sync"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/kaspanet/kaspad/app/appmessage"
|
"github.com/kaspanet/kaspad/app/appmessage"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
@ -205,14 +207,13 @@ func (am *AddressManager) Unban(address *appmessage.NetAddress) error {
|
|||||||
defer am.mutex.Unlock()
|
defer am.mutex.Unlock()
|
||||||
|
|
||||||
key := netAddressKey(address)
|
key := netAddressKey(address)
|
||||||
bannedAddress, ok := am.bannedAddresses[key.address]
|
_, ok := am.bannedAddresses[key.address]
|
||||||
if !ok {
|
if !ok {
|
||||||
return errors.Wrapf(ErrAddressNotFound, "address %s "+
|
return errors.Wrapf(ErrAddressNotFound, "address %s "+
|
||||||
"is not registered with the address manager as banned", address.TCPAddress())
|
"is not registered with the address manager as banned", address.TCPAddress())
|
||||||
}
|
}
|
||||||
|
|
||||||
delete(am.bannedAddresses, key.address)
|
delete(am.bannedAddresses, key.address)
|
||||||
am.addresses[key] = bannedAddress
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -222,6 +223,7 @@ func (am *AddressManager) IsBanned(address *appmessage.NetAddress) (bool, error)
|
|||||||
defer am.mutex.Unlock()
|
defer am.mutex.Unlock()
|
||||||
|
|
||||||
key := netAddressKey(address)
|
key := netAddressKey(address)
|
||||||
|
am.unbanIfOldEnough(key.address)
|
||||||
if _, ok := am.bannedAddresses[key.address]; !ok {
|
if _, ok := am.bannedAddresses[key.address]; !ok {
|
||||||
if _, ok = am.addresses[key]; !ok {
|
if _, ok = am.addresses[key]; !ok {
|
||||||
return false, errors.Wrapf(ErrAddressNotFound, "address %s "+
|
return false, errors.Wrapf(ErrAddressNotFound, "address %s "+
|
||||||
@ -233,3 +235,15 @@ func (am *AddressManager) IsBanned(address *appmessage.NetAddress) (bool, error)
|
|||||||
return true, nil
|
return true, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (am *AddressManager) unbanIfOldEnough(ipv6Address ipv6) {
|
||||||
|
address, ok := am.bannedAddresses[ipv6Address]
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const maxBanTime = 24 * time.Hour
|
||||||
|
if mstime.Since(address.Timestamp) > maxBanTime {
|
||||||
|
delete(am.bannedAddresses, ipv6Address)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user