added blacklist command

This commit is contained in:
2022-02-12 00:09:22 +04:00
parent fe65508649
commit 4958c9a5c1

View File

@@ -49,6 +49,9 @@ func showHelp(output io.Writer) {
"log error Set error log output\n"+ "log error Set error log output\n"+
"exit Exit\n"+ "exit Exit\n"+
"search file Search globally for files using the local search index\n"+ "search file Search globally for files using the local search index\n"+
"add blacklist Adds a node to the blacklist\n"+
"list blacklist Shows all nodes in the blacklist\n"+
"remove blacklist removes all nodes in the blacklist\n"+
"\n") "\n")
} }
@@ -494,6 +497,66 @@ func userCommands(backend *core.Backend, input io.Reader, output io.Writer, term
fmt.Fprintf(output, " Found via keywords %s\n", keywords) fmt.Fprintf(output, " Found via keywords %s\n", keywords)
} }
case "add blacklist":
fmt.Fprintf(output, "Enter node peer ID:\n")
peerID, _, terminate := getUserOptionString(reader, terminateSignal)
if terminate {
return
}
publicKeyB, err := hex.DecodeString(peerID)
if err != nil || len(publicKeyB) != 33 {
fmt.Fprintf(output, "Invalid peer ID encoding.\n")
break
}
publicKey, err := btcec.ParsePubKey(publicKeyB, btcec.S256())
if err != nil {
fmt.Fprintf(output, "Invalid peer ID (public key decoding failed).\n")
continue
}
fmt.Fprintf(output, "Enter reason for blacklist:\n")
Reason, _, terminate := getUserOptionString(reader, terminateSignal)
if terminate {
return
}
peerInfo := backend.PeerlistLookup(publicKey)
// add node information to the blacklist
backend.AddBlackList(peerInfo, Reason)
fmt.Println("Node added to the blacklist")
case "list blacklist":
backend.ListAllNodesInBlackList()
case "remove blacklist":
fmt.Fprintf(output, "Enter node peer ID:\n")
peerID, _, terminate := getUserOptionString(reader, terminateSignal)
if terminate {
return
}
publicKeyB, err := hex.DecodeString(peerID)
if err != nil || len(publicKeyB) != 33 {
fmt.Fprintf(output, "Invalid peer ID encoding.\n")
break
}
_, err = btcec.ParsePubKey(publicKeyB, btcec.S256())
if err != nil {
fmt.Fprintf(output, "Invalid peer ID (public key decoding failed).\n")
continue
}
// If the node ID exists in the blacklist
// then remove it from the blacklist
if backend.CheckNodeBlackList(publicKeyB) {
backend.RemoveNodeBlackList(publicKeyB)
}
default: default:
fmt.Fprintf(output, "Unknown command.\n") fmt.Fprintf(output, "Unknown command.\n")
} }