Documentation
¶
Index ¶
- Constants
- Variables
- func Filename(configRoot string) (string, error)
- func Marshal(value interface{}) ([]byte, error)
- func Path(configRoot, configFile string) (string, error)
- func PathRoot() (string, error)
- type AdminServer
- type Bootstrap
- type Config
- type Datastore
- type DirectAnnounce
- type Duration
- type HttpPublisher
- type Identity
- type Ingest
- type Policy
- type ProviderServer
- type PublisherKind
- type Reframe
Constants ¶
const ( // DefaultPathName is the default config dir name. DefaultPathName = ".index-provider" // DefaultPathRoot is the path to the default config dir location. DefaultPathRoot = "~/" + DefaultPathName // DefaultConfigFile is the filename of the configuration file. DefaultConfigFile = "config" // EnvDir is the environment variable used to change the path root. EnvDir = "PROVIDER_PATH" )
const (
PrivateKeyPathEnvVar = "INDEXPROVIDER_PRIV_KEY_PATH"
)
Variables ¶
var ( ErrInitialized = errors.New("configuration file already exists") ErrNotInitialized = errors.New("not initialized") )
var ErrInvalidPeerAddr = errors.New("invalid peer address")
ErrInvalidPeerAddr signals an address is not a valid peer address.
Functions ¶
func Filename ¶
Filename returns the configuration file path given a configuration root directory. If the configuration root directory is empty, use the default.
Types ¶
type AdminServer ¶
type AdminServer struct {
// Admin is the admin API listen address
ListenMultiaddr string
ReadTimeout Duration
WriteTimeout Duration
}
func NewAdminServer ¶
func NewAdminServer() AdminServer
NewAdminServer instantiates a new AdminServer config with default values.
func (*AdminServer) ListenNetAddr ¶
func (as *AdminServer) ListenNetAddr() (string, error)
func (*AdminServer) PopulateDefaults ¶
func (c *AdminServer) PopulateDefaults()
PopulateDefaults replaces zero-values in the config with default values.
type Bootstrap ¶
type Bootstrap struct {
// Peers is the local nodes's bootstrap peer addresses
Peers []string
// MinimumPeers governs whether to bootstrap more connections. If the node
// has less open connections than this number, it will open connections to
// the bootstrap nodes. Set to 0 to disable bootstrapping.
MinimumPeers int
}
func NewBootstrap ¶
func NewBootstrap() Bootstrap
NewBootstrap instantiates a new Bootstrap config with default values.
type Config ¶
type Config struct {
Identity Identity
Datastore Datastore
Ingest Ingest
ProviderServer ProviderServer
AdminServer AdminServer
Bootstrap Bootstrap
DirectAnnounce DirectAnnounce
Reframe Reframe
}
Config is used to load config files.
func InitWithIdentity ¶
func (*Config) PopulateDefaults ¶
func (c *Config) PopulateDefaults()
type Datastore ¶
type Datastore struct {
// Type is the type of datastore
Type string
// Dir is the directory within the config root where the datastore is kept
Dir string
}
Datastore tracks the configuration of the datastore.
func NewDatastore ¶
func NewDatastore() Datastore
NewDatastore instantiates a new Datastore config with default values.
func (*Datastore) PopulateDefaults ¶
func (c *Datastore) PopulateDefaults()
PopulateDefaults replaces zero-values in the config with default values.
type DirectAnnounce ¶ added in v0.9.0
type DirectAnnounce struct {
// URLs is a list of indexer URLs to send HTTP announce messages to.
URLs []string
}
DirectAnnounce configures the target indexers that advertisement announce messages are sent directly to via HTTP.
func NewDirectAnnounce ¶ added in v0.9.0
func NewDirectAnnounce() DirectAnnounce
NewDirectAnnounce returns DirectAnnounce with values set to their defaults.
type Duration ¶
Duration wraps time.Duration to provide json serialization and deserialization.
NOTE: the zero value encodes to an empty string.
func (Duration) MarshalText ¶
func (*Duration) UnmarshalText ¶
type HttpPublisher ¶
type HttpPublisher struct {
ListenMultiaddr string
}
func NewHttpPublisher ¶
func NewHttpPublisher() HttpPublisher
NewHttpPublisher instantiates a new config with default values.
func (*HttpPublisher) ListenNetAddr ¶
func (hs *HttpPublisher) ListenNetAddr() (string, error)
type Identity ¶
Identity tracks the configuration of the local node's identity.
func CreateIdentity ¶
CreateIdentity initializes a new identity.
func (Identity) DecodeOrCreate ¶ added in v0.9.0
func (Identity) DecodeOrCreatePrivateKey ¶ added in v0.9.0
func (identity Identity) DecodeOrCreatePrivateKey(out io.Writer, passphrase string) (ic.PrivKey, error)
DecodeOrCreatePrivateKey is a helper to decode the user's PrivateKey. If the key hasn't been provided in json config then it's going to be read from PrivateKeyPathEnvVar. If that file doesn't exist then a new key is going to be generated and saved there.
type Ingest ¶
type Ingest struct {
// LinkCacheSize is the maximum number of links that cash can store before
// LRU eviction. If a single linked list has more links than the cache can
// hold, the cache is resized to be able to hold all links.
LinkCacheSize int
// LinkedChunkSize is the number of multihashes in each chunk of in the
// advertised entries linked list. If multihashes are 128 bytes, then
// setting LinkedChunkSize = 16384 will result in blocks of about 2Mb when
// full.
LinkedChunkSize int
// PubSubTopic used to advertise ingestion announcements.
PubSubTopic string
// PurgeLinkCache tells whether to purge the link cache on daemon startup.
PurgeLinkCache bool
// HttpPublisher configures the dagsync httpsync publisher.
HttpPublisher HttpPublisher
// PublisherKind specifies which dagsync.Publisher implementation to use.
PublisherKind PublisherKind
// SyncPolicy configures which indexers are allowed to sync advertisements
// with this provider over a data transfer session.
SyncPolicy Policy
}
Ingest configures settings related to the ingestion protocol.
func NewIngest ¶
func NewIngest() Ingest
NewIngest instantiates a new Ingest configuration with default values.
func (*Ingest) PopulateDefaults ¶
func (c *Ingest) PopulateDefaults()
PopulateDefaults replaces zero-values in the config with default values.
type Policy ¶ added in v0.8.1
type Policy struct {
// Allow is either false or true, and determines whether a peer is allowed
// (true) or is blocked (false), by default.
Allow bool
// Except is a list of peer IDs that are exceptions to the Allow policy.
// If Allow is true, then all peers are allowed except those listed in
// Except. If Allow is false, then no peers are allowed except those listed
// in Except. in other words, Allow=true means that Except is a deny-list
// and Allow=false means that Except is an allow-list.
Except []string
}
Policy configures which indexer peers are allowed and which are blocked.
type ProviderServer ¶
type ProviderServer struct {
// ListenMultiaddr is the multiaddr string for the node's listen address
ListenMultiaddr string
// RetrievalMultiaddrs are the addresses to advertise for data retrieval.
// Defaults to the provider's libp2p host listen addresses.
RetrievalMultiaddrs []string
}
func NewProviderServer ¶
func NewProviderServer() ProviderServer
NewProviderServer instantiates a new ProviderServer config with default values.
func (*ProviderServer) PopulateDefaults ¶
func (c *ProviderServer) PopulateDefaults()
PopulateDefaults replaces zero-values in the config with default values.
type PublisherKind ¶
type PublisherKind string
const ( DTSyncPublisherKind PublisherKind = "dtsync" HttpPublisherKind PublisherKind = "http" )
type Reframe ¶ added in v0.9.0
type Reframe struct {
ListenMultiaddr string
ReadTimeout Duration
WriteTimeout Duration
// CidTtl is a lifetime of a cid after which it is considered expired
CidTtl Duration
// ChunkSize is size of a chunk before it gets avertised to an indexer
ChunkSize int
// SnapshotSize is the maximum number of records in the Provide payload after which it is considered a snapshot.
// Snapshots don't have individual timestamps recorded into the datastore. Instead, timestamps are recorded as a binary blob after processing is done.
SnapshotSize int
// ProviderID is a Peer ID of the IPFS node that the reframe server is expecting advertisements from
ProviderID string
// Addrs is a list of multiaddresses of the IPFS node that the reframe server is expecting advertisements from
Addrs []string
}
Reframe tracks the configuration of reframe serber. If specified, index provider will expose a reframe server that will allow an IPFS node to advertise their CIDs through the delegated routing protocol.
func NewReframe ¶ added in v0.9.0
func NewReframe() Reframe
NewReframe instantiates a new Reframe config with default values.
func (*Reframe) ListenNetAddr ¶ added in v0.9.0
func (*Reframe) PopulateDefaults ¶ added in v0.9.0
func (c *Reframe) PopulateDefaults()
PopulateDefaults replaces zero-values in the config with default values.