Documentation ¶
Index ¶
- Variables
- type Config
- type Endpoint
- func (endpoint *Endpoint) Delete(ctx context.Context, delete *pb.PieceDeleteRequest) (_ *pb.PieceDeleteResponse, err error)
- func (endpoint *Endpoint) Download(stream pb.Piecestore_DownloadServer) (err error)
- func (endpoint *Endpoint) IsExpired(expiration *timestamp.Timestamp) bool
- func (endpoint *Endpoint) SaveOrder(ctx context.Context, limit *pb.OrderLimit2, order *pb.Order2, ...)
- func (endpoint *Endpoint) Upload(stream pb.Piecestore_UploadServer) (err error)
- func (endpoint *Endpoint) VerifyOrder(ctx context.Context, peer *identity.PeerIdentity, limit *pb.OrderLimit2, ...) (err error)
- func (endpoint *Endpoint) VerifyOrderLimit(ctx context.Context, limit *pb.OrderLimit2) (err error)
- func (endpoint *Endpoint) VerifyOrderLimitSignature(ctx context.Context, limit *pb.OrderLimit2) (err error)
- func (endpoint *Endpoint) VerifyPieceHash(ctx context.Context, peer *identity.PeerIdentity, limit *pb.OrderLimit2, ...) (err error)
- type OldConfig
- type SerialNumberFn
- type UsedSerials
Constants ¶
This section is empty.
Variables ¶
var ( // Error is the default error class for piecestore errors Error = errs.Class("piecestore") // ErrProtocol is the default error class for protocol errors. ErrProtocol = errs.Class("piecestore protocol") // ErrInternal is the default error class for internal piecestore errors. ErrInternal = errs.Class("piecestore internal") )
var ( // ErrVerifyNotAuthorized is returned when the one submitting the action is not authorized to perform that action. ErrVerifyNotAuthorized = errs.Class("not authorized") // ErrVerifyUntrusted is returned when action is not trusted. ErrVerifyUntrusted = errs.Class("untrusted") // ErrVerifyDuplicateRequest is returned when serial number has been already used to submit an action. ErrVerifyDuplicateRequest = errs.Class("duplicate request") )
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct { ExpirationGracePeriod time.Duration `help:"how soon before expiration date should things be considered expired" default:"48h0m0s"` MaxConcurrentRequests int `help:"how many concurrent requests are allowed, before uploads are rejected." default:"6"` OrderLimitGracePeriod time.Duration `help:"how long after OrderLimit creation date are OrderLimits no longer accepted" default:"1h0m0s"` Monitor monitor.Config Sender orders.SenderConfig }
Config defines parameters for piecestore endpoint.
type Endpoint ¶
type Endpoint struct {
// contains filtered or unexported fields
}
Endpoint implements uploading, downloading and deleting for a storage node.
func NewEndpoint ¶
func NewEndpoint(log *zap.Logger, signer signing.Signer, trust *trust.Pool, monitor *monitor.Service, store *pieces.Store, pieceinfo pieces.DB, orders orders.DB, usage bandwidth.DB, usedSerials UsedSerials, config Config) (*Endpoint, error)
NewEndpoint creates a new piecestore endpoint.
func (*Endpoint) Delete ¶
func (endpoint *Endpoint) Delete(ctx context.Context, delete *pb.PieceDeleteRequest) (_ *pb.PieceDeleteResponse, err error)
Delete handles deleting a piece on piece store.
func (*Endpoint) Download ¶
func (endpoint *Endpoint) Download(stream pb.Piecestore_DownloadServer) (err error)
Download implements downloading a piece from piece store.
func (*Endpoint) IsExpired ¶
IsExpired checks whether the date has already expired (with a threshold) at the time of calling this function.
func (*Endpoint) SaveOrder ¶
func (endpoint *Endpoint) SaveOrder(ctx context.Context, limit *pb.OrderLimit2, order *pb.Order2, uplink *identity.PeerIdentity)
SaveOrder saves the order with all necessary information. It assumes it has been already verified.
func (*Endpoint) Upload ¶
func (endpoint *Endpoint) Upload(stream pb.Piecestore_UploadServer) (err error)
Upload handles uploading a piece on piece store.
func (*Endpoint) VerifyOrder ¶
func (endpoint *Endpoint) VerifyOrder(ctx context.Context, peer *identity.PeerIdentity, limit *pb.OrderLimit2, order *pb.Order2, largestOrderAmount int64) (err error)
VerifyOrder verifies that the order corresponds to the order limit and has all the necessary fields.
func (*Endpoint) VerifyOrderLimit ¶
VerifyOrderLimit verifies that the order limit is properly signed and has sane values. It also verifies that the serial number has not been used.
func (*Endpoint) VerifyOrderLimitSignature ¶
func (endpoint *Endpoint) VerifyOrderLimitSignature(ctx context.Context, limit *pb.OrderLimit2) (err error)
VerifyOrderLimitSignature verifies that the order limit signature is valid.
func (*Endpoint) VerifyPieceHash ¶
func (endpoint *Endpoint) VerifyPieceHash(ctx context.Context, peer *identity.PeerIdentity, limit *pb.OrderLimit2, hash *pb.PieceHash, expectedHash []byte) (err error)
VerifyPieceHash verifies whether the piece hash is properly signed and matches the locally computed hash.
type OldConfig ¶ added in v0.11.0
type OldConfig struct { Path string `help:"path to store data in" default:"$CONFDIR/storage"` WhitelistedSatelliteIDs string `` /* 298-byte string literal not displayed */ SatelliteIDRestriction bool `help:"if true, only allow data from approved satellites" devDefault:"false" releaseDefault:"true"` AllocatedDiskSpace memory.Size `user:"true" help:"total allocated disk space in bytes" default:"1TB"` AllocatedBandwidth memory.Size `user:"true" help:"total allocated bandwidth in bytes" default:"2TB"` KBucketRefreshInterval time.Duration `help:"how frequently Kademlia bucket should be refreshed with node stats" default:"1h0m0s"` }
OldConfig contains everything necessary for a server
type SerialNumberFn ¶
type SerialNumberFn func(satelliteID storj.NodeID, serialNumber storj.SerialNumber, expiration time.Time)
SerialNumberFn is callback from IterateAll
type UsedSerials ¶
type UsedSerials interface { // Add adds a serial to the database. Add(ctx context.Context, satelliteID storj.NodeID, serialNumber storj.SerialNumber, expiration time.Time) error // DeleteExpired deletes expired serial numbers DeleteExpired(ctx context.Context, now time.Time) error // IterateAll iterates all serials. // Note, this will lock the database and should only be used during startup. IterateAll(ctx context.Context, fn SerialNumberFn) error }
UsedSerials is a persistent store for serial numbers. TODO: maybe this should be in orders.UsedSerials