Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
69076a83
Commit
69076a83
authored
Sep 08, 2021
by
libangzhu
Committed by
vipwzw
Sep 13, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add gossip blacklist
parent
98bd8da2
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
196 additions
and
7 deletions
+196
-7
go.mod
go.mod
+4
-2
go.sum
go.sum
+12
-0
common.go
plugin/p2p/gossip/common.go
+29
-0
const.go
plugin/p2p/gossip/const.go
+6
-0
nodeinfo.go
plugin/p2p/gossip/nodeinfo.go
+23
-2
p2p.go
plugin/p2p/gossip/p2p.go
+8
-0
p2pcli.go
plugin/p2p/gossip/p2pcli.go
+114
-3
No files found.
go.mod
View file @
69076a83
...
...
@@ -3,7 +3,7 @@ module github.com/33cn/plugin
go 1.14
require (
github.com/33cn/chain33 v1.65.3-0.202109070
70424-a73dd61ebd6e
github.com/33cn/chain33 v1.65.3-0.202109070
94427-933c4f1b3d02
github.com/BurntSushi/toml v0.3.1
github.com/NebulousLabs/Sia v1.3.7
github.com/NebulousLabs/errors v0.0.0-20181203160057-9f787ce8f69e // indirect
...
...
@@ -16,6 +16,7 @@ require (
github.com/coreos/etcd v3.3.15+incompatible
github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f // indirect
github.com/davecgh/go-spew v1.1.1
github.com/dgraph-io/badger v1.6.2 // indirect
github.com/ethereum/go-ethereum v1.10.0
github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
...
...
@@ -24,6 +25,7 @@ require (
github.com/holiman/uint256 v1.1.1
github.com/huin/goupnp v1.0.1-0.20200620063722-49508fba0031
github.com/jackpal/go-nat-pmp v1.0.2
github.com/libp2p/go-libp2p-tls v0.1.3 // indirect
github.com/mr-tron/base58 v1.2.0
github.com/pborman/uuid v1.2.0
github.com/perlin-network/life v0.0.0-20191203030451-05c0e0f7eaea
...
...
@@ -39,7 +41,7 @@ require (
github.com/valyala/fasthttp v1.5.0
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5
golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6
golang.org/x/sys v0.0.0-20210
823070655-63515b42dcdf
golang.org/x/sys v0.0.0-20210
906170528-6f6e22806c34
golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0 // indirect
google.golang.org/grpc v1.33.2
google.golang.org/protobuf v1.25.0
...
...
go.sum
View file @
69076a83
...
...
@@ -28,6 +28,8 @@ dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D
git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg=
github.com/33cn/chain33 v1.65.3-0.20210907070424-a73dd61ebd6e h1:VphQHhOd/QzEl31o6TfeZ2lRxrPm3HpFiiDDn4MdbY4=
github.com/33cn/chain33 v1.65.3-0.20210907070424-a73dd61ebd6e/go.mod h1:Dpr4UhVgIzqB/5RBUa7Qoq39JQ5kKRN+PjTEWfucN3o=
github.com/33cn/chain33 v1.65.3-0.20210907094427-933c4f1b3d02 h1:jA+QhA7oEr2OjKEj8/sZvcle3J0WoAW2WDNrR6JhoF4=
github.com/33cn/chain33 v1.65.3-0.20210907094427-933c4f1b3d02/go.mod h1:31Yet+1aA1mThbStTcrrO84dRqp38LIRVaIynV1pO7c=
github.com/AndreasBriese/bbloom v0.0.0-20180913140656-343706a395b7/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8=
github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8=
github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 h1:cTp8I5+VIoKjsnZuH8vjyaysT/ses3EvZeaV/1UkF2M=
...
...
@@ -1061,6 +1063,7 @@ github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6Ut
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
...
...
@@ -1159,6 +1162,8 @@ golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hM
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
...
...
@@ -1194,6 +1199,7 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6 h1:0PC75Fz/kyMGhL0e1QnypqK2kQMqKt9csD1GnMJR+Zk=
golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
...
...
@@ -1262,15 +1268,20 @@ golang.org/x/sys v0.0.0-20210105210732-16f7687f5001/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210426080607-c94f62235c83 h1:kHSDPqCtsHZOg0nVylfTo20DDhE9gG4Y0jn7hKQ0QAM=
golang.org/x/sys v0.0.0-20210426080607-c94f62235c83/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf h1:2ucpDCmfkl8Bd/FsLtiD653Wf96cW37s+iGx93zsu4k=
golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34 h1:GkvMjFtXUmahfDtashnc1mnrCtuBVcwse5QV2lUk/tI=
golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
...
...
@@ -1325,6 +1336,7 @@ golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapK
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a h1:CB3a9Nez8M13wwlr/E2YtwoU+qYHKfC+JrDa45RXXoQ=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
...
...
plugin/p2p/gossip/common.go
View file @
69076a83
...
...
@@ -13,6 +13,7 @@ import (
"fmt"
"math/rand"
"net"
"strconv"
"strings"
"time"
...
...
@@ -28,6 +29,34 @@ var P2pComm Comm
// Comm information
type
Comm
struct
{}
//CheckNetAddr check addr or ip format
func
(
Comm
)
CheckNetAddr
(
addr
string
)
error
{
//check peerAddr
if
!
strings
.
Contains
(
addr
,
":"
)
{
//only ip
if
net
.
ParseIP
(
addr
)
==
nil
{
return
errors
.
New
(
"invalid ip"
)
}
return
nil
}
host
,
port
,
err
:=
net
.
SplitHostPort
(
addr
)
if
err
!=
nil
{
return
err
}
iport
,
err
:=
strconv
.
ParseInt
(
port
,
10
,
32
)
if
err
!=
nil
||
iport
>
65535
{
return
errors
.
New
(
"invalid port"
)
}
if
net
.
ParseIP
(
host
)
==
nil
{
return
errors
.
New
(
"invalid ip"
)
}
return
nil
}
// AddrRouteble address router ,return enbale address
func
(
Comm
)
AddrRouteble
(
addrs
[]
string
,
version
int32
,
creds
credentials
.
TransportCredentials
)
[]
string
{
var
enableAddrs
[]
string
...
...
plugin/p2p/gossip/const.go
View file @
69076a83
...
...
@@ -25,6 +25,12 @@ var (
CheckActivePeersInterVal
=
5
*
time
.
Second
CheckBlackListInterVal
=
30
*
time
.
Second
CheckCfgSeedsInterVal
=
1
*
time
.
Minute
unitTime
=
map
[
string
]
int64
{
"hour"
:
3600
,
"min"
:
60
,
"second"
:
1
,
}
)
const
(
...
...
plugin/p2p/gossip/nodeinfo.go
View file @
69076a83
...
...
@@ -118,8 +118,9 @@ func (p *PeerInfos) GetPeerInfo(peerName string) *types.Peer {
// BlackList badpeers list
type
BlackList
struct
{
mtx
sync
.
Mutex
badPeers
map
[
string
]
int64
mtx
sync
.
Mutex
badPeers
map
[
string
]
int64
peerstore
sync
.
Map
}
// FetchPeerInfo get peerinfo by node
...
...
@@ -257,10 +258,26 @@ func (nf *NodeInfo) OutSide() bool {
func
(
bl
*
BlackList
)
Add
(
addr
string
,
deadline
int64
)
{
bl
.
mtx
.
Lock
()
defer
bl
.
mtx
.
Unlock
()
if
deadline
==
0
{
//默认1年
deadline
=
365
*
24
*
3600
}
bl
.
badPeers
[
addr
]
=
types
.
Now
()
.
Unix
()
+
deadline
}
func
(
bl
*
BlackList
)
addPeerStore
(
peerName
,
remoteAddr
string
)
{
bl
.
peerstore
.
Store
(
peerName
,
remoteAddr
)
}
func
(
bl
*
BlackList
)
getpeerStore
(
key
string
)
(
string
,
bool
)
{
v
,
ok
:=
bl
.
peerstore
.
Load
(
key
)
if
ok
{
return
v
.
(
string
),
ok
}
return
""
,
ok
}
// Delete delete badpeer
func
(
bl
*
BlackList
)
Delete
(
addr
string
)
{
bl
.
mtx
.
Lock
()
...
...
@@ -268,6 +285,10 @@ func (bl *BlackList) Delete(addr string) {
delete
(
bl
.
badPeers
,
addr
)
}
func
(
bl
*
BlackList
)
deletePeerStore
(
peerName
string
)
{
bl
.
peerstore
.
Delete
(
peerName
)
}
// Has the badpeer true and false
func
(
bl
*
BlackList
)
Has
(
addr
string
)
bool
{
bl
.
mtx
.
Lock
()
...
...
plugin/p2p/gossip/p2p.go
View file @
69076a83
...
...
@@ -374,6 +374,7 @@ func (network *P2p) subP2pMsg() {
network
.
otherFactory
<-
struct
{}{}
}
}
switch
msg
.
Ty
{
case
types
.
EventTxBroadcast
:
//广播tx
...
...
@@ -390,6 +391,13 @@ func (network *P2p) subP2pMsg() {
network
.
processEvent
(
msg
,
taskIndex
,
network
.
p2pCli
.
GetHeaders
)
case
types
.
EventGetNetInfo
:
network
.
processEvent
(
msg
,
taskIndex
,
network
.
p2pCli
.
GetNetInfo
)
case
types
.
EventAddBlacklist
:
network
.
processEvent
(
msg
,
taskIndex
,
network
.
p2pCli
.
AddPeerToBlacklist
)
case
types
.
EventDelBlacklist
:
network
.
processEvent
(
msg
,
taskIndex
,
network
.
p2pCli
.
DelPeerFromBlacklist
)
case
types
.
EventShowBlacklist
:
network
.
processEvent
(
msg
,
taskIndex
,
network
.
p2pCli
.
ShowBlacklist
)
default
:
log
.
Warn
(
"unknown msgtype"
,
"msg"
,
msg
)
msg
.
Reply
(
network
.
client
.
NewMessage
(
""
,
msg
.
Ty
,
types
.
Reply
{
Msg
:
[]
byte
(
"unknown msgtype"
)}))
...
...
plugin/p2p/gossip/p2pcli.go
View file @
69076a83
...
...
@@ -10,12 +10,13 @@ import (
"io"
"math/rand"
"net"
"github.com/33cn/chain33/p2p/utils"
"sync/atomic"
"time"
"github.com/33cn/chain33/system/p2p/dht/protocol/peer"
"github.com/33cn/chain33/p2p/utils"
"github.com/33cn/chain33/queue"
pb
"github.com/33cn/chain33/types"
"golang.org/x/net/context"
...
...
@@ -33,6 +34,9 @@ type EventInterface interface {
GetBlocks
(
msg
*
queue
.
Message
,
taskindex
int64
)
BlockBroadcast
(
msg
*
queue
.
Message
,
taskindex
int64
)
GetNetInfo
(
msg
*
queue
.
Message
,
taskindex
int64
)
AddPeerToBlacklist
(
msg
*
queue
.
Message
,
taskindex
int64
)
DelPeerFromBlacklist
(
msg
*
queue
.
Message
,
taskindex
int64
)
ShowBlacklist
(
msg
*
queue
.
Message
,
taskindex
int64
)
}
// NormalInterface subscribe to the event hander interface
...
...
@@ -652,3 +656,110 @@ func (m *Cli) getLocalPeerInfo() (*pb.P2PPeerInfo, error) {
return
&
localpeerinfo
,
nil
}
// AddPeerToBlacklist add peer to blacklist
func
(
m
*
Cli
)
AddPeerToBlacklist
(
msg
*
queue
.
Message
,
taskindex
int64
)
{
defer
func
()
{
<-
m
.
network
.
otherFactory
log
.
Debug
(
"GetNetInfo"
,
"task complete:"
,
taskindex
)
}()
blackPeer
:=
msg
.
GetData
()
.
(
*
pb
.
BlackPeer
)
//parase lifetime,min,hour,seconds
lifetime
,
err
:=
peer
.
CaculateLifeTime
(
blackPeer
.
GetLifetime
())
if
err
!=
nil
{
log
.
Error
(
"AddPeerToBlacklist"
,
"CaculateLifeTime"
,
err
)
msg
.
Reply
(
m
.
network
.
client
.
NewMessage
(
"rpc"
,
pb
.
EventReply
,
&
pb
.
Reply
{
IsOk
:
false
,
Msg
:
[]
byte
(
"invalid lifetime"
)}))
return
}
if
blackPeer
.
PeerAddr
!=
""
{
//把IP或者IP:PORT加入 黑名单
//check peerAddr
err
:=
P2pComm
.
CheckNetAddr
(
blackPeer
.
GetPeerAddr
())
if
err
!=
nil
{
msg
.
Reply
(
m
.
network
.
client
.
NewMessage
(
"rpc"
,
pb
.
EventReply
,
&
pb
.
Reply
{
IsOk
:
false
,
Msg
:
[]
byte
(
err
.
Error
())}))
return
}
m
.
network
.
node
.
nodeInfo
.
blacklist
.
Add
(
blackPeer
.
PeerAddr
,
int64
(
lifetime
.
Seconds
()))
peerName
,
ok
:=
m
.
network
.
node
.
peerStore
.
Load
(
blackPeer
.
PeerAddr
)
if
ok
{
m
.
network
.
node
.
nodeInfo
.
blacklist
.
addPeerStore
(
blackPeer
.
PeerAddr
,
peerName
.
(
string
))
m
.
network
.
node
.
nodeInfo
.
blacklist
.
addPeerStore
(
peerName
.
(
string
),
blackPeer
.
PeerAddr
)
m
.
network
.
node
.
remove
(
peerName
.
(
string
))
//close peer
}
}
else
if
blackPeer
.
PeerName
!=
""
{
peer
:=
m
.
network
.
node
.
GetRegisterPeer
(
blackPeer
.
PeerName
)
if
peer
!=
nil
{
m
.
network
.
node
.
nodeInfo
.
blacklist
.
Add
(
peer
.
Addr
(),
int64
(
lifetime
.
Seconds
()))
m
.
network
.
node
.
nodeInfo
.
blacklist
.
addPeerStore
(
peer
.
Addr
(),
blackPeer
.
PeerName
)
m
.
network
.
node
.
nodeInfo
.
blacklist
.
addPeerStore
(
blackPeer
.
PeerName
,
peer
.
Addr
())
m
.
network
.
node
.
remove
(
blackPeer
.
PeerName
)
//close peer
}
else
{
msg
.
Reply
(
m
.
network
.
client
.
NewMessage
(
"rpc"
,
pb
.
EventReply
,
&
pb
.
Reply
{
IsOk
:
false
,
Msg
:
[]
byte
(
"no this peer name"
)}))
return
}
}
msg
.
Reply
(
m
.
network
.
client
.
NewMessage
(
"rpc"
,
pb
.
EventReply
,
&
pb
.
Reply
{
IsOk
:
true
,
Msg
:
[]
byte
(
"success"
)}))
}
func
(
m
*
Cli
)
DelPeerFromBlacklist
(
msg
*
queue
.
Message
,
taskindex
int64
)
{
defer
func
()
{
<-
m
.
network
.
otherFactory
log
.
Debug
(
"GetNetInfo"
,
"task complete:"
,
taskindex
)
}()
blackPeer
:=
msg
.
GetData
()
.
(
*
pb
.
BlackPeer
)
if
blackPeer
.
PeerAddr
!=
""
{
//check peerAddr
err
:=
P2pComm
.
CheckNetAddr
(
blackPeer
.
GetPeerAddr
())
if
err
!=
nil
{
msg
.
Reply
(
m
.
network
.
client
.
NewMessage
(
"rpc"
,
pb
.
EventReply
,
&
pb
.
Reply
{
IsOk
:
false
,
Msg
:
[]
byte
(
err
.
Error
())}))
return
}
m
.
network
.
node
.
nodeInfo
.
blacklist
.
Delete
(
blackPeer
.
PeerAddr
)
m
.
network
.
node
.
nodeInfo
.
blacklist
.
deletePeerStore
(
blackPeer
.
PeerAddr
)
}
else
if
blackPeer
.
PeerName
!=
""
{
//通过pid 获取remoteAddr
remoteAddr
,
ok
:=
m
.
network
.
node
.
nodeInfo
.
blacklist
.
getpeerStore
(
blackPeer
.
PeerName
)
if
ok
{
m
.
network
.
node
.
nodeInfo
.
blacklist
.
Delete
(
remoteAddr
)
m
.
network
.
node
.
nodeInfo
.
blacklist
.
deletePeerStore
(
remoteAddr
)
}
m
.
network
.
node
.
nodeInfo
.
blacklist
.
deletePeerStore
(
blackPeer
.
PeerName
)
}
msg
.
Reply
(
m
.
network
.
client
.
NewMessage
(
"rpc"
,
pb
.
EventReply
,
&
pb
.
Reply
{
IsOk
:
true
,
Msg
:
[]
byte
(
"success"
)}))
}
func
(
m
*
Cli
)
ShowBlacklist
(
msg
*
queue
.
Message
,
taskindex
int64
)
{
defer
func
()
{
<-
m
.
network
.
otherFactory
log
.
Debug
(
"GetNetInfo"
,
"task complete:"
,
taskindex
)
}()
peers
:=
m
.
network
.
node
.
nodeInfo
.
blacklist
.
GetBadPeers
()
var
list
pb
.
Blacklist
now
:=
time
.
Now
()
.
Unix
()
for
remoteAddr
,
span
:=
range
peers
{
lifetime
:=
span
-
now
if
lifetime
<
0
{
lifetime
=
0
}
info
:=
&
pb
.
BlackInfo
{
RemoteAddr
:
remoteAddr
,
Lifetime
:
lifetime
}
peerName
,
ok
:=
m
.
network
.
node
.
nodeInfo
.
blacklist
.
getpeerStore
(
remoteAddr
)
if
ok
{
info
.
PeerName
=
peerName
}
list
.
Blackinfo
=
append
(
list
.
Blackinfo
,
info
)
}
msg
.
Reply
(
m
.
network
.
client
.
NewMessage
(
"rpc"
,
pb
.
EventShowBlacklist
,
&
list
))
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment