New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IPFS filtering to allow node operators to decide on content they are willing to serve #8492
Comments
|
@thibmeu : thanks for bringing this up. I think we need to have a larger discussion about the kind of software Gateway Operators want to have before we keep proceeding with the status quo of go-ipfs serving the wide range of usecases from high traffic gateways to desktop applications. go-ipfs maintainers are going to link discussions/notes that we're having in 2021Q4 on this topic to #8499 . We'll certainly be engaging with Cloudflare as part of this process. |
|
2022-06-03 conversation: we have the capability for this in go-bitswap per #8763 . If you're interested in contributing a plugin, that would be welcome. Otherwise this isn't a priority for the core maintainers because go-ipfs isn't really designed for large-scale operations, but we'll support operators on any reviews. |
|
@guseggert will link the issue that is actively being worked on right now that will make plugins easier to write/maintain. |
|
The issue is #7653, which allows arbitrary modifications to the go-ipfs dependency graph using a plugin, so that you can inject a custom |
|
I believe it is time to prioritize this. There is enough need and interest around blocking bad bits for this to be part of Kubo, and not just a plugin:
Quick notes:
|
|
Another requirement from Infra team: ability to allow / deny specific PeerIDs. This is a real world which I also needed in the past. In many cases, we struggle to create deterministic test fixtures. Making sure node can't dial specific Peer and needs to get data from someone else requires disabliing more and more internal services (mdns, routing, relays...) and is very brittle, test setup can break the moment we introduce new discovery method. When we design
|
thibmeu commentedOct 6, 2021
Checklist
Description
Recently, Cloudflare has open sourced a fork of go-ipfs providing filtering capabilities, grouped under
safemodecommand. The architecture is described in a dedicated blog.The system works by filtering certain CID when walking the DAG. This allow node operators to prevent certain CID from being provided, both by the HTTP gateway and to the P2P network.
CIDs to be filtered are stored in a blocklist. By default, this blocklist is in a dedicated mount of the datastore
/safemode.Action that can be performed by a blocklist are (based on the proposed interface):
blockto add content to the blocklistunblockto remove itpurgeto remove content from the blockstore. Ideally, this option could be extensible, to purge remote datastore, or HTTP cache for instancesearchto query the blocklistauditto access the log of actions that have been performed against the blocklistFor convenience,
ipfs safemodecommand provides multiple way to resolve content. From its documentation:This is a proposal implementation, which satisfies some requirements laid out in ipfs/roadmap#64. It provides a more standardised approach for node operators to filter content they are willing to provide.
The implementation has been developed 3 years ago, and may not suit the current architecture of the go-ipfs project.
The text was updated successfully, but these errors were encountered: