ipfs

package
v0.0.0-...-c57a2f4 Latest Latest
Warning

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

Go to latest
Published: Mar 6, 2019 License: AGPL-3.0 Imports: 43 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MessageTopicPrefix = "/offlinemessage/"
	GlobalIPNSTopic    = "IPNS"
	GlobalBlockTopic   = "BLOCK"
	GlobalCIDTopic     = "CID"
)
View Source
const MAGIC string = "000000000000000000000000"

Variables

This section is empty.

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

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

func FetchGraph

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)

Fetch pointers from the dht

func FindPointersAsync

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

Fetch pointers from the dht. They will be returned asynchronously.

func GetHash

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

func GetHashOfFile

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

func GetPointersFromPeer

func GetPointersFromPeer(node *core.IpfsNode, ctx context.Context, p peer.ID, key *cid.Cid) ([]*ps.PeerInfo, error)

func IdentityFromKey

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

func IdentityKeyFromSeed

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

func Publish

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

Publish a signed IPNS record to our Peer ID

func PublishAltRoot

func PublishAltRoot(nd *core.IpfsNode, altRoot string, value path.Path, eol time.Time) error

Publish another IPFS record at /ipns/<peerID>:<altRoot>

func PublishPointer

func PublishPointer(node *core.IpfsNode, ctx context.Context, pointer Pointer) error

func PutPointerToPeer

func PutPointerToPeer(node *core.IpfsNode, ctx context.Context, peer peer.ID, pointer Pointer) error

func PutRecordToRouting

func PutRecordToRouting(ctx context.Context, ipnskey string, k ci.PrivKey, value path.Path, seqnum uint64, eol time.Time, r routing.ValueStore) error

func Query

func Query(n *core.IpfsNode, peerID string) ([]peer.ID, error)

func RemoveAll

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

func Resolve

func Resolve(n *core.IpfsNode, p peer.ID, timeout time.Duration, 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

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

func ResolveThenCat

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

func UnPinDir

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

Recursively un-pin a directory given its hash.

This will allow it to be garbage collected.

Types

type Pointer

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

A 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

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

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 Pubsub

type Pubsub struct {
	Subscriber *PubsubSubscriber
	Publisher  *PubsubPublisher
}

type PubsubPublisher

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

PubsubPublisher is a publisher that distributes arbitrary data through pubsub

func NewPubsubPublisher

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

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

func (*PubsubPublisher) Publish

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

type PubsubSubscriber

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

PubsubSubscriber subscribes to arbitrary subscriptions through pubsub

func NewPubsubSubscriber

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

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

func (*PubsubSubscriber) Cancel

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

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

func (*PubsubSubscriber) GetSubscriptions

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

GetSubscriptions retrieves a list of active topic subscriptions

func (*PubsubSubscriber) Subscribe

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

type Purpose

type Purpose int
const (
	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