storage

package
v0.0.0-...-fc9a6ea Latest Latest
Warning

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

Go to latest
Published: Mar 28, 2024 License: GPL-3.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrStorageNotInitialized = errors.New("the storage provider has not been initialized")
	ErrDoesNotExist          = errors.New("the file does not exist")
)

Functions

This section is empty.

Types

type LocalStorageOptions

type LocalStorageOptions struct {
	BasePath           string `json:"path"`
	AutoRefreshEnabled bool   `json:"auto_refresh_enabled"`
}

type LocalStorageProvider

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

func (*LocalStorageProvider) AutoRefreshChannels

func (lsp *LocalStorageProvider) AutoRefreshChannels() (chan string, chan error, error)

func (*LocalStorageProvider) AutoRefreshEnabled

func (lsp *LocalStorageProvider) AutoRefreshEnabled() (bool, error)

func (*LocalStorageProvider) BasePath

func (lsp *LocalStorageProvider) BasePath() string

func (*LocalStorageProvider) CheckFile

func (lsp *LocalStorageProvider) CheckFile(fileName string) error

func (*LocalStorageProvider) CheckPackage

func (lsp *LocalStorageProvider) CheckPackage(packageName string) (consts.PackageType, error)

func (*LocalStorageProvider) Close

func (lsp *LocalStorageProvider) Close() error

func (*LocalStorageProvider) CloseLogging

func (lsp *LocalStorageProvider) CloseLogging() []error

func (*LocalStorageProvider) Destroy

func (lsp *LocalStorageProvider) Destroy() error

func (*LocalStorageProvider) GetLogger

func (lsp *LocalStorageProvider) GetLogger(logName string) (io.Writer, error)

func (*LocalStorageProvider) Initialized

func (lsp *LocalStorageProvider) Initialized() bool

func (*LocalStorageProvider) IsNew

func (lsp *LocalStorageProvider) IsNew() bool

func (*LocalStorageProvider) ListPackages

func (lsp *LocalStorageProvider) ListPackages(packageType consts.PackageType) (map[string]PackageEntry, []error)

func (*LocalStorageProvider) Name

func (lsp *LocalStorageProvider) Name() string

func (*LocalStorageProvider) New

func (lsp *LocalStorageProvider) New(options StorageOptions, createAsNeeded bool) error

func (*LocalStorageProvider) Options

func (lsp *LocalStorageProvider) Options() StorageOptions

func (*LocalStorageProvider) Paths

func (lsp *LocalStorageProvider) Paths() (*StoragePaths, error)

func (*LocalStorageProvider) ReadBundleFile

func (lsp *LocalStorageProvider) ReadBundleFile() ([]byte, error)

func (*LocalStorageProvider) ReadConfig

func (lsp *LocalStorageProvider) ReadConfig() ([]byte, error)

func (*LocalStorageProvider) ReadIndex

func (lsp *LocalStorageProvider) ReadIndex() ([]byte, error)

func (*LocalStorageProvider) ReadIndexSignature

func (lsp *LocalStorageProvider) ReadIndexSignature() ([]byte, error)

func (*LocalStorageProvider) ReadPackage

func (lsp *LocalStorageProvider) ReadPackage(packageName string) ([]byte, error)

func (*LocalStorageProvider) ReadPackageSignature

func (lsp *LocalStorageProvider) ReadPackageSignature(packageName string) ([]byte, error)

func (*LocalStorageProvider) ReadPackageSigningKey

func (lsp *LocalStorageProvider) ReadPackageSigningKey() ([]byte, error)

func (*LocalStorageProvider) ReadTLSCertificateCrt

func (lsp *LocalStorageProvider) ReadTLSCertificateCrt() ([]byte, error)

func (*LocalStorageProvider) ReadTLSCertificateKey

func (lsp *LocalStorageProvider) ReadTLSCertificateKey() ([]byte, error)

func (*LocalStorageProvider) ReadVaultCA

func (lsp *LocalStorageProvider) ReadVaultCA() ([]byte, error)

func (*LocalStorageProvider) RemovePackage

func (lsp *LocalStorageProvider) RemovePackage(packageName string) error

func (*LocalStorageProvider) RemovePackageSignature

func (lsp *LocalStorageProvider) RemovePackageSignature(packageName string) error

func (*LocalStorageProvider) SetConfigPath

func (lsp *LocalStorageProvider) SetConfigPath(newConfigPath string) error

func (*LocalStorageProvider) StopAutoRefresh

func (lsp *LocalStorageProvider) StopAutoRefresh(commitToOptions bool) error

func (*LocalStorageProvider) WriteBundleFile

func (lsp *LocalStorageProvider) WriteBundleFile(data []byte) error

func (*LocalStorageProvider) WriteConfig

func (lsp *LocalStorageProvider) WriteConfig(configData []byte) error

func (*LocalStorageProvider) WriteIndex

func (lsp *LocalStorageProvider) WriteIndex(indexData []byte) error

func (*LocalStorageProvider) WriteIndexSignature

func (lsp *LocalStorageProvider) WriteIndexSignature(indexSignatureData []byte) error

func (*LocalStorageProvider) WritePackage

func (lsp *LocalStorageProvider) WritePackage(packageName string, packageData []byte) error

func (*LocalStorageProvider) WritePackageSignature

func (lsp *LocalStorageProvider) WritePackageSignature(packageName string, signatureData []byte) error

func (*LocalStorageProvider) WritePackageSigningKey

func (lsp *LocalStorageProvider) WritePackageSigningKey(data []byte) error

func (*LocalStorageProvider) WritePackageWithFileName

func (lsp *LocalStorageProvider) WritePackageWithFileName(fileName string, packageData []byte) error

func (*LocalStorageProvider) WriteTLSCertificateCrt

func (lsp *LocalStorageProvider) WriteTLSCertificateCrt(data []byte) error

func (*LocalStorageProvider) WriteTLSCertificateKey

func (lsp *LocalStorageProvider) WriteTLSCertificateKey(data []byte) error

func (*LocalStorageProvider) WriteVaultCA

func (lsp *LocalStorageProvider) WriteVaultCA(data []byte) error

type PackageEntry

type PackageEntry struct {
	Name         string
	CommandName  string
	ManifestData []byte
}

type S3StorageOptions

type S3StorageOptions struct {
	Region             string `json:"region"`
	BucketName         string `json:"bucket"`
	Directory          string `json:"directory"`
	AutoRefreshEnabled bool   `json:"auto_refresh_enabled"`
}

type S3StorageProvider

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

func (*S3StorageProvider) AutoRefreshChannels

func (ssp *S3StorageProvider) AutoRefreshChannels() (chan string, chan error, error)

func (*S3StorageProvider) AutoRefreshEnabled

func (ssp *S3StorageProvider) AutoRefreshEnabled() (bool, error)

func (*S3StorageProvider) BasePath

func (ssp *S3StorageProvider) BasePath() string

func (*S3StorageProvider) CheckFile

func (ssp *S3StorageProvider) CheckFile(objectKey string) error

func (*S3StorageProvider) CheckPackage

func (ssp *S3StorageProvider) CheckPackage(packageName string) (consts.PackageType, error)

func (*S3StorageProvider) Close

func (ssp *S3StorageProvider) Close() error

func (*S3StorageProvider) CloseLogging

func (ssp *S3StorageProvider) CloseLogging() []error

func (*S3StorageProvider) Destroy

func (ssp *S3StorageProvider) Destroy() error

This function does not delete the bucket itself, just the armory objects inside of it

func (*S3StorageProvider) GetLogger

func (ssp *S3StorageProvider) GetLogger(logName string) (io.Writer, error)

func (*S3StorageProvider) Initialized

func (ssp *S3StorageProvider) Initialized() bool

func (*S3StorageProvider) IsNew

func (ssp *S3StorageProvider) IsNew() bool

func (*S3StorageProvider) ListPackages

func (ssp *S3StorageProvider) ListPackages(packageType consts.PackageType) (map[string]PackageEntry, []error)

func (*S3StorageProvider) Name

func (ssp *S3StorageProvider) Name() string

func (*S3StorageProvider) New

func (ssp *S3StorageProvider) New(options StorageOptions, createAsNeeded bool) error

func (*S3StorageProvider) Options

func (ssp *S3StorageProvider) Options() StorageOptions

func (*S3StorageProvider) Paths

func (ssp *S3StorageProvider) Paths() (*StoragePaths, error)

func (*S3StorageProvider) ReadBundleFile

func (ssp *S3StorageProvider) ReadBundleFile() ([]byte, error)

func (*S3StorageProvider) ReadConfig

func (ssp *S3StorageProvider) ReadConfig() ([]byte, error)

func (*S3StorageProvider) ReadIndex

func (ssp *S3StorageProvider) ReadIndex() ([]byte, error)

func (*S3StorageProvider) ReadIndexSignature

func (ssp *S3StorageProvider) ReadIndexSignature() ([]byte, error)

func (*S3StorageProvider) ReadPackage

func (ssp *S3StorageProvider) ReadPackage(packageName string) ([]byte, error)

func (*S3StorageProvider) ReadPackageSignature

func (ssp *S3StorageProvider) ReadPackageSignature(packageName string) ([]byte, error)

func (*S3StorageProvider) ReadPackageSigningKey

func (ssp *S3StorageProvider) ReadPackageSigningKey() ([]byte, error)

func (*S3StorageProvider) ReadTLSCertificateCrt

func (ssp *S3StorageProvider) ReadTLSCertificateCrt() ([]byte, error)

func (*S3StorageProvider) ReadTLSCertificateKey

func (ssp *S3StorageProvider) ReadTLSCertificateKey() ([]byte, error)

func (*S3StorageProvider) ReadVaultCA

func (ssp *S3StorageProvider) ReadVaultCA() ([]byte, error)

func (*S3StorageProvider) RemovePackage

func (ssp *S3StorageProvider) RemovePackage(packageName string) error

func (*S3StorageProvider) RemovePackageSignature

func (ssp *S3StorageProvider) RemovePackageSignature(packageName string) error

func (*S3StorageProvider) SetConfigPath

func (ssp *S3StorageProvider) SetConfigPath(newConfigPath string) error

func (*S3StorageProvider) StopAutoRefresh

func (ssp *S3StorageProvider) StopAutoRefresh(commitToOptions bool) error

func (*S3StorageProvider) WriteBundleFile

func (ssp *S3StorageProvider) WriteBundleFile(data []byte) error

func (*S3StorageProvider) WriteConfig

func (ssp *S3StorageProvider) WriteConfig(configData []byte) error

func (*S3StorageProvider) WriteIndex

func (ssp *S3StorageProvider) WriteIndex(indexData []byte) error

func (*S3StorageProvider) WriteIndexSignature

func (ssp *S3StorageProvider) WriteIndexSignature(indexSignatureData []byte) error

func (*S3StorageProvider) WritePackage

func (ssp *S3StorageProvider) WritePackage(packageName string, packageData []byte) error

func (*S3StorageProvider) WritePackageSignature

func (ssp *S3StorageProvider) WritePackageSignature(packageName string, signatureData []byte) error

func (*S3StorageProvider) WritePackageSigningKey

func (ssp *S3StorageProvider) WritePackageSigningKey(data []byte) error

func (*S3StorageProvider) WritePackageWithFileName

func (ssp *S3StorageProvider) WritePackageWithFileName(fileName string, packageData []byte) error

func (*S3StorageProvider) WriteTLSCertificateCrt

func (ssp *S3StorageProvider) WriteTLSCertificateCrt(data []byte) error

func (*S3StorageProvider) WriteTLSCertificateKey

func (ssp *S3StorageProvider) WriteTLSCertificateKey(data []byte) error

func (*S3StorageProvider) WriteVaultCA

func (ssp *S3StorageProvider) WriteVaultCA(data []byte) error

type StorageOptions

type StorageOptions interface{}

An empty interface for storage options. The exact implementation depends on the storage provider. All storage providers should have an option for enabling auto-refresh.

type StoragePaths

type StoragePaths struct {
	Aliases           string
	Extensions        string
	PackageSignatures string
	Certificates      string
	Logs              string
	Bundles           string
	Config            string
	Index             string
	IndexSignature    string
	PackageSigningKey string
	CertificateKey    string
	CertificateCrt    string
	VaultCAPEM        string
}

An object for the paths - this is common for all StorageProviders

func (*StoragePaths) Directories

func (sp *StoragePaths) Directories() map[string]string

Returns paths corresponding to directories

func (*StoragePaths) Files

func (sp *StoragePaths) Files() map[string]string

Returns paths corresponding to files

type StorageProvider

type StorageProvider interface {
	// New sets up a new instance of the storage provider with the options appropriate for that storage provider.
	// The storage provider also accepts a boolean: whether directories are created as needed
	New(StorageOptions, bool) error
	// Returns the name of the storage provider
	Name() string
	// Returns the options that the storager provider is configured with
	Options() StorageOptions
	// Returns whether the directories had to be created on the storage provider (useful to know whether initial setup needs to be run)
	IsNew() bool
	// Returns the paths configured for this provider and an error if the provider is not initialized
	Paths() (*StoragePaths, error)
	// Indicates whether the storage provider can notify the main process of a change in the package directories
	AutoRefreshEnabled() (bool, error)
	// Returns the channels for file events and errors. An error is returned if the provider is not initialized or there was an error in setting up auto refresh
	AutoRefreshChannels() (chan string, chan error, error)
	// Turn off auto refresh after the storage provider has started
	StopAutoRefresh(bool) error
	// Perform any final cleanup that may need to be done before exiting
	Close() error
	// Removes the root directory and all of its subdirectories
	Destroy() error
	// Returns whether the storage provider has been initialized successfully
	Initialized() bool
	// Returns the root directory (base path) of the storage provider
	BasePath() string
	// Checks for the existance of a file in the storage provider - returns nil if the file exists, storage.ErrNotExist if it does not, and an error if the function encountered another error
	CheckFile(string) error
	// Sets a different path for the config file than the default
	SetConfigPath(string) error
	// Returns the raw contents of the configuration file
	ReadConfig() ([]byte, error)
	// Stores the provided data in the configuration file
	WriteConfig([]byte) error
	// Reads the package signing key from storage
	ReadPackageSigningKey() ([]byte, error)
	// Writes the package signing key to storage
	WritePackageSigningKey([]byte) error
	// Reads the TLS certificate key file from storage
	ReadTLSCertificateKey() ([]byte, error)
	// Writes the TLS certificate key file to storage
	WriteTLSCertificateKey([]byte) error
	// Reads the TLS certificate file from storage
	ReadTLSCertificateCrt() ([]byte, error)
	// Writes the TLS certificate file to storage
	WriteTLSCertificateCrt([]byte) error
	// Reads the bundle file from storage
	ReadBundleFile() ([]byte, error)
	// Writes the bundle file to storage
	WriteBundleFile([]byte) error
	// Checks for the existence of a package with a given name and returns its package type and any errors encountered
	CheckPackage(string) (consts.PackageType, error)
	// Returns the archive for a package with the given name
	ReadPackage(string) ([]byte, error)
	// Writes the package with the given name to storage
	WritePackage(string, []byte) error
	// Writes the package with the given file name to storage
	WritePackageWithFileName(string, []byte) error
	// Remove a package with a given name from storage. Removing a package does not remove its signature, so be sure to remove its signature too.
	RemovePackage(string) error
	// Return a list of packages as a map of the command name to a PackageEntry (name, command name, manifest)
	ListPackages(consts.PackageType) (map[string]PackageEntry, []error)
	// Get the signature for a given package (this package does not sign the package)
	ReadPackageSignature(string) ([]byte, error)
	// Write the signature for a given package (this function does not sign the package)
	WritePackageSignature(string, []byte) error
	// Remove the package signature from storage for a given package
	RemovePackageSignature(string) error
	// Return the package index (this function does not generate the index)
	ReadIndex() ([]byte, error)
	// Write the package index to storage
	WriteIndex([]byte) error
	// Read the package index signature (this function does not sign the index)
	ReadIndexSignature() ([]byte, error)
	// Write the package index signature to storage (this function does not sign the index)
	WriteIndexSignature([]byte) error
	// Return the named logging backend (io.Writer)
	GetLogger(string) (io.Writer, error)
	// Close the logging backend (returns multiple errors because there could be multiple backends)
	CloseLogging() []error
	// For Vault
	// Return the custom CA PEM file for the configured Vault
	ReadVaultCA() ([]byte, error)
	// Store the custom CA PEM file for the configured Vault
	WriteVaultCA([]byte) error
}

This is the interface for the armory's storage backends. It features discrete functions for reading and writing the different kinds of files that we would need from the storage backend. This shifts the need to remember the paths for each type of file onto the storage provider as opposed to having a single read or write file function where a path or other specifier would have to be supplied by the caller.

Jump to

Keyboard shortcuts

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