Documentation
¶
Overview ¶
Package faraday contains the main function for faraday.
Index ¶
- Constants
- Variables
- func Main() error
- func NewStores(cfg Config, clock clock.Clock) (*stores, error)
- func SetupLoggers(root *build.SubLoggerManager, intercept signal.Interceptor)
- func UseLogger(logger btclog.Logger)
- func ValidateConfig(config *Config) error
- func Version() string
- type Config
- type Faraday
- type LndConfig
Constants ¶
const ( DefaultNetwork = "mainnet" // DatabaseBackendSqlite is the name of the SQLite database backend. DatabaseBackendSqlite = "sqlite" // DatabaseBackendPostgres is the name of the Postgres database backend. DatabaseBackendPostgres = "postgres" )
const Subsystem = "FRDY"
Subsystem defines the logging code for this subsystem.
Variables ¶
var ( // FaradayDirBase is the default main directory where faraday stores its // data. FaradayDirBase = btcutil.AppDataDir("faraday", false) // DefaultTLSCertFilename is the default file name for the autogenerated // TLS certificate. DefaultTLSCertFilename = "tls.cert" // DefaultTLSKeyFilename is the default file name for the autogenerated // TLS key. DefaultTLSKeyFilename = "tls.key" // DefaultTLSCertPath is the default full path of the autogenerated TLS // certificate. DefaultTLSCertPath = filepath.Join( FaradayDirBase, DefaultNetwork, DefaultTLSCertFilename, ) // DefaultTLSKeyPath is the default full path of the autogenerated TLS // key. DefaultTLSKeyPath = filepath.Join( FaradayDirBase, DefaultNetwork, DefaultTLSKeyFilename, ) // DefaultMacaroonFilename is the default file name for the // autogenerated faraday macaroon. DefaultMacaroonFilename = "faraday.macaroon" // DefaultMacaroonPath is the default full path of the base faraday // macaroon. DefaultMacaroonPath = filepath.Join( FaradayDirBase, DefaultNetwork, DefaultMacaroonFilename, ) // DefaultLndDir is the default location where we look for lnd's tls and // macaroon files. DefaultLndDir = btcutil.AppDataDir("lnd", false) // DefaultLndMacaroonPath is the default location where we look for a // macaroon to use when connecting to lnd. DefaultLndMacaroonPath = filepath.Join( DefaultLndDir, "data", "chain", "bitcoin", DefaultNetwork, defaultLndMacaroon, ) )
var Commit string
Commit stores the current commit hash of this build, this should be set using the -ldflags during compilation.
var MinLndVersion = &verrpc.Version{
AppMajor: 0,
AppMinor: 15,
AppPatch: 4,
}
MinLndVersion is the minimum lnd version required. Note that apis that are only available in more recent versions are available at compile time, so this version should be bumped if additional functionality is included that depends on newer apis.
Functions ¶
func Main ¶
func Main() error
Main is the real entry point for faraday. It is required to ensure that defers are properly executed when os.Exit() is called.
func SetupLoggers ¶
func SetupLoggers(root *build.SubLoggerManager, intercept signal.Interceptor)
SetupLoggers initializes all package-global logger variables.
func UseLogger ¶
UseLogger uses a specified Logger to output package logging info. This should be used in preference to SetLogWriter if the caller is also using btclog.
func ValidateConfig ¶
ValidateConfig sanitizes all file system paths and makes sure no incompatible configuration combinations are used.
func Version ¶
func Version() string
Version returns the application version as a properly formed string per the semantic versioning 2.0.0 spec (http://semver.org/).
Types ¶
type Config ¶
type Config struct {
// Lnd holds the configuration options for the connection to lnd.
Lnd *LndConfig `group:"lnd" namespace:"lnd"`
// FaradayDir is the main directory where faraday stores all its data.
FaradayDir string `` /* 151-byte string literal not displayed */
// ChainConn specifies whether to attempt connecting to a bitcoin backend.
ChainConn bool `` /* 161-byte string literal not displayed */
ShowVersion bool `long:"version" description:"Display version information and exit"`
// MinimumMonitored is the minimum amount of time that a channel must be monitored for before we consider it for termination.
MinimumMonitored time.Duration `` /* 163-byte string literal not displayed */
// Network is a string containing the network we're running on.
Network string `` /* 135-byte string literal not displayed */
// DebugLevel is a string defining the log level for the service either
// for all subsystems the same or individual level by subsystem.
DebugLevel string `long:"debuglevel" description:"Debug level for faraday and its subsystems."`
TLSCertPath string `long:"tlscertpath" description:"Path to write the TLS certificate for faraday's RPC and REST services."`
TLSKeyPath string `long:"tlskeypath" description:"Path to write the TLS private key for faraday's RPC and REST services."`
TLSExtraIPs []string `long:"tlsextraip" description:"Adds an extra IP to the generated certificate."`
TLSExtraDomains []string `long:"tlsextradomain" description:"Adds an extra domain to the generated certificate."`
TLSAutoRefresh bool `long:"tlsautorefresh" description:"Re-generate TLS certificate and key if the IPs or domains are changed."`
TLSDisableAutofill bool `` /* 174-byte string literal not displayed */
TLSCertDuration time.Duration `long:"tlscertduration" description:"The duration for which the auto-generated TLS certificate will be valid for."`
MacaroonPath string `long:"macaroonpath" description:"Path to write the macaroon for faraday's RPC and REST services if it doesn't exist."`
// RPCListen is the listen address for the faraday rpc server.
RPCListen string `long:"rpclisten" description:"Address to listen on for gRPC clients."`
// RESTListen is the listen address for the faraday REST server.
RESTListen string `long:"restlisten" description:"Address to listen on for REST clients. If not specified, no REST listener will be started."`
// CORSOrigin specifies the CORS header that should be set on REST responses. No header is added if the value is empty.
CORSOrigin string `long:"corsorigin" description:"The value to send in the Access-Control-Allow-Origin header. Header will be omitted if empty."`
// Bitcoin is the configuration required to connect to a bitcoin node.
Bitcoin *chain.BitcoinConfig `group:"bitcoin" namespace:"bitcoin"`
// Logging controls various aspects of pool logging.
Logging *build.LogConfig `group:"logging" namespace:"logging"`
// DatabaseBackend is the database backend we will use for storing all
// liveness data.
DatabaseBackend string `` /* 129-byte string literal not displayed */
// Sqlite holds the configuration options for a SQLite database
// backend.
Sqlite *db.SqliteConfig `group:"sqlite" namespace:"sqlite"`
// Postgres holds the configuration options for a Postgres database
Postgres *sqldb.PostgresConfig `group:"postgres" namespace:"postgres"`
// ChanEvents holds the configuration options for channel event safety
// pruning.
ChanEvents *chanevents.Config `group:"chanevents" namespace:"chanevents"`
}
func DefaultConfig ¶
func DefaultConfig() Config
DefaultConfig returns all default values for the Config struct.
type Faraday ¶
type Faraday struct {
*frdrpcserver.RPCServer
// contains filtered or unexported fields
}
Faraday is a struct that houses the faraday daemon and its dependencies.
func (*Faraday) StartAsSubserver ¶
func (f *Faraday) StartAsSubserver(lndGrpc *lndclient.GrpcLndServices, withMacaroonService bool) error
StartAsSubserver is an alternative to Start where the RPC server does not create its own gRPC server but registers to an existing one. The same goes for REST (if enabled), instead of creating an own mux and HTTP server, we register to an existing one.
func (*Faraday) Stop ¶
Stop shuts down Faraday: the RPC servers, macaroon service, and, if Faraday owns the lnd connection (standalone mode via Start), the lnd connection as well. In subserver mode (started via StartAsSubserver) the lnd connection is left open for the parent process to manage.
Calling Stop on an already stopped or never-started instance is a no-op and returns nil.
func (*Faraday) ValidateMacaroon ¶
func (f *Faraday) ValidateMacaroon(ctx context.Context, requiredPermissions []bakery.Op, fullMethod string) error
ValidateMacaroon extracts the macaroon from the context's gRPC metadata, checks its signature, makes sure all specified permissions for the called method are contained within and finally ensures all caveat conditions are met. A non-nil error is returned if any of the checks fail. This method is needed to enable faraday running as an external subserver in the same process as lnd but still validate its own macaroons.
type LndConfig ¶
type LndConfig struct {
// RPCServer is host:port that lnd's RPC server is listening on.
RPCServer string `long:"rpcserver" description:"host:port that LND is listening for RPC connections on"`
// MacaroonDir is the directory that contains all the macaroon files
// required for the remote connection.
MacaroonDir string `long:"macaroondir" description:"DEPRECATED: Use macaroonpath."`
// MacaroonPath is the path to the single macaroon that should be used
// instead of needing to specify the macaroon directory that contains
// all of lnd's macaroons. The specified macaroon MUST have all
// permissions that all the subservers use, otherwise permission errors
// will occur.
MacaroonPath string `` /* 304-byte string literal not displayed */
// TLSCertPath is the path to the tls cert that faraday should use.
TLSCertPath string `long:"tlscertpath" description:"Path to TLS cert"`
// RequestTimeout is the maximum time to wait for a response from lnd.
RequestTimeout time.Duration `` /* 136-byte string literal not displayed */
}
Directories
¶
| Path | Synopsis |
|---|---|
|
Package chanevents contains functions for monitoring and storing channel events such as online/offline and balance updates.
|
Package chanevents contains functions for monitoring and storing channel events such as online/offline and balance updates. |
|
cmd
|
|
|
faraday
command
|
|
|
frcli
command
|
|
|
Package dataset provides a basic dataset type which provides functionality for detecting inter-quartile range outliers.
|
Package dataset provides a basic dataset type which provides functionality for detecting inter-quartile range outliers. |
|
sqlc
Package sqlc provides a set of custom database queries and utilities for interacting with the SQL database used in the application.
|
Package sqlc provides a set of custom database queries and utilities for interacting with the SQL database used in the application. |
|
frdrpc
module
|
|
|
Package frdrpcserver contains the server logic for faraday's grpc server which serves requests for close recommendations.
|
Package frdrpcserver contains the server logic for faraday's grpc server which serves requests for close recommendations. |
|
Package lndwrap wraps various calls to lndclient for convenience.
|
Package lndwrap wraps various calls to lndclient for convenience. |
|
Package recommend provides recommendations for closing channels with the constraints provided in its close recommendation config.
|
Package recommend provides recommendations for closing channels with the constraints provided in its close recommendation config. |