ipfs

package
v2.4.3+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 8, 2020 License: MIT Imports: 56 Imported by: 14

Documentation

Index

Constants

View Source
const (
	IPFSProtocolAppMainnetOne = "/openbazaar/app/1.0.0"
	IPFSProtocolAppTestnetOne = "/openbazaar/app/testnet/1.0.0"

	IPFSProtocolBitswapMainnetNoVers    = "/openbazaar/bitswap"
	IPFSProtocolBitswapMainnetOne       = "/openbazaar/bitswap/1.0.0"
	IPFSProtocolBitswapMainnetOneDotOne = "/openbazaar/bitswap/1.1.0"
	IPFSProtocolBitswapTestnetNoVers    = "/openbazaar/bitswap/testnet"
	IPFSProtocolBitswapTestnetOne       = "/openbazaar/bitswap/testnet/1.0.0"
	IPFSProtocolBitswapTestnetOneDotOne = "/openbazaar/bitswap/testnet/1.1.0"

	IPFSProtocolDHTMainnetLegacy = "/openbazaar/dht"
	IPFSProtocolDHTTestnetLegacy = "/openbazaar/dht/testnet"

	IPFSProtocolKademliaMainnetOne = "/openbazaar/kad/1.0.0"
	IPFSProtocolKademliaTestnetOne = "/openbazaar/kad/testnet/1.0.0"
)
View Source
const MagicPointerID string = "000000000000000000000000"

MAGIC is a constant combined with a hashed key when creating a magic ID.

Variables

View Source
var (
	ErrCachingRouterIncorrectRoutingType = errors.New("Incorrect routing type")
)
View Source
var ErrNotStarted = errors.New("API router not started")

ErrNotStarted is returned if a method is called before the router is started using the Start() method.

Functions

func AddDirectory

func AddDirectory(n *core.IpfsNode, root string) (rootHash string, err error)

Recursively add a directory to IPFS and return the root hash

func AddFile

func AddFile(n *core.IpfsNode, file string) (string, error)

func Cat

func Cat(n *core.IpfsNode, path string, timeout time.Duration) ([]byte, error)

Fetch data from IPFS given the hash

func ConnectedPeers

func ConnectedPeers(n *core.IpfsNode) []peer.ID

func CreatePointerKey added in v0.6.3

func CreatePointerKey(mh multihash.Multihash, prefixLen int) multihash.Multihash

func DeleteCachedIPNSRecord added in v0.13.6

func DeleteCachedIPNSRecord(store ds.Datastore, id peer.ID) error

DeleteCachedIPNSRecord removes the cached record associated with the provided peer.ID

func EncodeCID added in v0.14.0

func EncodeCID(b []byte) (*cid.Cid, error)

EncodeCID - Hash with SHA-256 and encode as a multihash

func EncodeMultihash added in v0.14.0

func EncodeMultihash(b []byte) (*mh.Multihash, error)

EncodeMultihash - sha256 encode

func ExtractIDFromPointer added in v0.14.0

func ExtractIDFromPointer(pi ps.PeerInfo) (string, error)

ExtractIDFromPointer Certain pointers, such as moderators, contain a peerID. This function will extract the ID from the underlying PeerInfo object.

func FetchGraph added in v0.9.2

func FetchGraph(n *core.IpfsNode, id *cid.Cid) ([]cid.Cid, error)

This function takes a Cid directory object and walks it returning each linked cid in the graph

func FindPointers

func FindPointers(dht *routing.IpfsDHT, ctx context.Context, mhKey multihash.Multihash, prefixLen int) ([]ps.PeerInfo, error)

FindPointers fetches pointers from the dht

func FindPointersAsync

func FindPointersAsync(dht *routing.IpfsDHT, ctx context.Context, mhKey multihash.Multihash, prefixLen int) <-chan ps.PeerInfo

FindPointersAsync fetches pointers from the dht. They will be returned asynchronously.

func GetCachedIPNSRecord added in v0.13.6

func GetCachedIPNSRecord(store ds.Datastore, id peer.ID) (*ipnspb.IpnsEntry, error)

GetCachedIPNSRecord retrieves the full IPNSEntry from the provided datastore if present

func GetCachedPubkey added in v0.13.6

func GetCachedPubkey(store ds.Datastore, peerID string) ([]byte, error)

GetCachedPubkey retrieves the pubkey using the appropriate key prefix from the provided Datastore

func GetHash added in v0.4.3

func GetHash(n *core.IpfsNode, reader io.Reader) (string, error)

func GetHashOfFile added in v0.5.5

func GetHashOfFile(n *core.IpfsNode, fpath string) (string, error)

func GetPointersFromPeer added in v0.9.3

func GetPointersFromPeer(dht *routing.IpfsDHT, ctx context.Context, p peer.ID, key *cid.Cid) ([]*ps.PeerInfo, error)

func IdentityFromKey

func IdentityFromKey(privkey []byte) (config.Identity, error)

IdentityFromKey returns IPFS peer identity based on private key

func IdentityKeyFromSeed

func IdentityKeyFromSeed(seed []byte, bits int) ([]byte, error)

IdentityKeyFromSeed generates an OpenBazaar seed IPFS key pair

func InstallDatabasePlugins added in v0.13.3

func InstallDatabasePlugins()

InstallDatabasePlugins installs the default database plugins used by marketplace-go. This function is guarded by a sync.Once so it isn't accidentally called more than once.

func PrepareIPFSConfig added in v0.13.3

func PrepareIPFSConfig(r repo.Repo, routerAPIEndpoint string, testEnable, regtestEnable bool) *ipfscore.BuildCfg

PrepareIPFSConfig builds the configuration options for the internal IPFS node.

func Publish

func Publish(n *core.IpfsNode, hash string) error

Publish a signed IPNS record to our Peer ID

func PublishPointer

func PublishPointer(dht *routing.IpfsDHT, ctx context.Context, pointer Pointer) error

func PutCachedPubkey added in v0.13.6

func PutCachedPubkey(store ds.Datastore, peerID string, pubkey []byte) error

PutCachedPubkey persists the pubkey using the appropriate key prefix from the provided datastore

func PutPointerToPeer added in v0.9.3

func PutPointerToPeer(dht *routing.IpfsDHT, ctx context.Context, peer peer.ID, pointer Pointer) error

func Query

func Query(dht *routing.IpfsDHT, peerID string) ([]peer.ID, error)

Query returns the closest peers known for peerID

func RemoveAll added in v0.11.1

func RemoveAll(nd *core.IpfsNode, peerID string, quorum uint) error

func Resolve added in v0.1.1

func Resolve(n *core.IpfsNode, p peer.ID, timeout time.Duration, quorum uint, usecache bool) (string, error)

Resolve an IPNS record. This is a multi-step process. If the usecache flag is provided we will attempt to load the record from the database. If it succeeds we will update the cache in a separate goroutine.

If we need to actually get a record from the network the IPNS namesystem will first check to see if it is subscribed to the name with pubsub. If so, it will return cache from the database. If not, it will subscribe to the name and proceed to a DHT query to find the record. If the DHT query returns nothing it will finally attempt to return from cache. All subsequent resolves will return from cache as the pubsub will update the cache in real time as new records are published.

func ResolveAltRoot added in v0.12.0

func ResolveAltRoot(n *core.IpfsNode, p peer.ID, altRoot string, timeout time.Duration) (string, error)

func ResolveThenCat added in v0.1.1

func ResolveThenCat(n *core.IpfsNode, ipnsPath ipath.Path, timeout time.Duration, quorum uint, usecache bool) ([]byte, error)

func UnPinDir

func UnPinDir(n *core.IpfsNode, rootHash string) error

UnPinDir removes all content from the published root directory to be garbage collected later by IPFS.

func UpdateIPFSGlobalProtocolVars added in v0.13.3

func UpdateIPFSGlobalProtocolVars(testnetEnable bool)

UpdateIPFSGlobalProtocolVars is a hack to manage custom protocol strings which do not yet have an API to manage their configuration

Types

type APIRouter added in v0.13.3

type APIRouter struct {
	// contains filtered or unexported fields
}

APIRouter is a routing.IpfsRouting compliant struct backed by an API. It only provides the features offerened by routing.ValueStore and marks the others as unsupported.

func NewAPIRouter added in v0.13.3

func NewAPIRouter(uri string, validator record.Validator) APIRouter

NewAPIRouter creates a new APIRouter backed by the given URI.

func (APIRouter) Bootstrap added in v0.13.3

func (r APIRouter) Bootstrap(_ context.Context) error

Bootstrap is a no-op. We don't need any setup to query the API.

func (APIRouter) FindPeer added in v0.13.3

func (r APIRouter) FindPeer(_ context.Context, id peer.ID) (pstore.PeerInfo, error)

FindPeer is unsupported

func (APIRouter) FindProvidersAsync added in v0.13.3

func (r APIRouter) FindProvidersAsync(_ context.Context, _ cid.Cid, _ int) <-chan pstore.PeerInfo

FindProvidersAsync is unsupported

func (APIRouter) GetValue added in v0.13.3

func (r APIRouter) GetValue(ctx context.Context, key string, opts ...ropts.Option) ([]byte, error)

GetValue reads the value for the given key

func (APIRouter) GetValues added in v0.13.3

func (r APIRouter) GetValues(ctx context.Context, key string, opts ...ropts.Option) ([]byte, error)

GetValues reads the value for the given key. The API does not return multiple values.

func (APIRouter) Provide added in v0.13.3

func (r APIRouter) Provide(_ context.Context, _ cid.Cid, _ bool) error

Provide is unsupported

func (APIRouter) PutValue added in v0.13.3

func (r APIRouter) PutValue(ctx context.Context, key string, value []byte, opts ...ropts.Option) error

PutValue writes the given value to the API for the given key

func (APIRouter) SearchValue added in v0.13.3

func (r APIRouter) SearchValue(ctx context.Context, key string, opts ...ropts.Option) (<-chan []byte, error)

SearchValue returns the value for the given key. It return either an error or a closed channel containing one value.

func (*APIRouter) Start added in v0.13.3

func (r *APIRouter) Start(proxyDialer proxy.Dialer)

type CachingRouter added in v0.13.3

type CachingRouter struct {
	routing.IpfsRouting
	// contains filtered or unexported fields
}

func NewCachingRouter added in v0.13.3

func NewCachingRouter(dht *dht.IpfsDHT, apiRouter *APIRouter) *CachingRouter

func (*CachingRouter) APIRouter added in v0.13.3

func (r *CachingRouter) APIRouter() *APIRouter

func (*CachingRouter) DHT added in v0.13.3

func (r *CachingRouter) DHT() (*dht.IpfsDHT, error)

func (*CachingRouter) GetPublicKey added in v0.13.3

func (r *CachingRouter) GetPublicKey(ctx context.Context, p peer.ID) (ci.PubKey, error)

func (*CachingRouter) GetValue added in v0.13.3

func (r *CachingRouter) GetValue(ctx context.Context, key string, opts ...ropts.Option) ([]byte, error)

func (*CachingRouter) PutValue added in v0.13.3

func (r *CachingRouter) PutValue(ctx context.Context, key string, value []byte, opts ...ropts.Option) error

func (*CachingRouter) SearchValue added in v0.13.3

func (r *CachingRouter) SearchValue(ctx context.Context, key string, opts ...ropts.Option) (<-chan []byte, error)

type Pointer

type Pointer struct {
	Cid       *cid.Cid
	Value     ps.PeerInfo
	Purpose   Purpose
	Timestamp time.Time
	CancelID  *peer.ID
}

Pointer is a custom provider inserted into the DHT which points to a location of a file.

For offline messaging purposes we use a hash of the recipient's ID as the key and set the
provider to the location of the ciphertext. We set the Peer ID of the provider object to
a magic number so we distinguish it from regular providers and use a longer ttl.
Note this will only be compatible with the OpenBazaar/go-ipfs fork.

func NewPointer added in v0.9.2

func NewPointer(mhKey multihash.Multihash, prefixLen int, addr ma.Multiaddr, entropy []byte) (Pointer, error)

NewPointer creates a new pointer. entropy is a sequence of bytes that should be deterministic based on the content of the pointer it is hashed and used to fill the remaining 20 bytes of the magic id

type PubKey added in v0.14.0

type PubKey interface {
	crypto.PubKey
}

PubKey wraps IPFS's underlying PubKey dependency

type Pubsub added in v0.12.4

type Pubsub struct {
	Subscriber *PubsubSubscriber
	Publisher  *PubsubPublisher
}

type PubsubPublisher added in v0.12.4

type PubsubPublisher struct {
	// contains filtered or unexported fields
}

PubsubPublisher is a publisher that distributes arbitrary data through pubsub

func NewPubsubPublisher added in v0.12.4

func NewPubsubPublisher(ctx context.Context, host p2phost.Host, cr routing.ContentRouting, ds ds.Datastore, ps *pubsub.PubSub) *PubsubPublisher

NewPubsubPublisher constructs a new Publisher that publishes arbitrary data through pubsub.

func (*PubsubPublisher) Publish added in v0.12.4

func (p *PubsubPublisher) Publish(ctx context.Context, topic string, data []byte) error

type PubsubSubscriber added in v0.12.4

type PubsubSubscriber struct {
	// contains filtered or unexported fields
}

PubsubSubscriber subscribes to arbitrary subscriptions through pubsub

func NewPubsubSubscriber added in v0.12.4

func NewPubsubSubscriber(ctx context.Context, host p2phost.Host, cr routing.ContentRouting, ds ds.Datastore, ps *pubsub.PubSub) *PubsubSubscriber

NewPubsubSubscriber constructs a new subscriber for arbitrary subscriptions through pubsub. same as above for pubsub bootstrap dependencies

func (*PubsubSubscriber) Cancel added in v0.12.4

func (r *PubsubSubscriber) Cancel(name string) bool

Cancel cancels a topic subscription; returns true if an active subscription was canceled

func (*PubsubSubscriber) GetSubscriptions added in v0.12.4

func (r *PubsubSubscriber) GetSubscriptions() []string

GetSubscriptions retrieves a list of active topic subscriptions

func (*PubsubSubscriber) Subscribe added in v0.12.4

func (r *PubsubSubscriber) Subscribe(ctx context.Context, topic string) (chan []byte, error)

type Purpose

type Purpose int

Purpose type is used to enumerate and distinguish the different purposes of pointers.

const (
	// MESSAGE and other constants set integer values for each pointer purpose.
	MESSAGE   Purpose = 1
	MODERATOR Purpose = 2
	TAG       Purpose = 3
	CHANNEL   Purpose = 4
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL