From a432f9a4c8dc2b9d07c909bc0ae465783a4994d2 Mon Sep 17 00:00:00 2001 From: Olaoluwa Osuntokun Date: Mon, 22 Oct 2018 17:28:12 -0700 Subject: [PATCH] lnrpc/signrpc: create new signrpc package with build-flag guarded config In this commit, we introduce a new sub-package within the greater RPC package. This new sub-package will house a new set of sub-RPC servers to expose experimental features behind build flags for upstream consumers. In this commit, we add the first config for the service, which will simply expose the lnwallet.Signer interface over RPC. In the default file, we have what the config will be if the build tag (signerrpc) is off. In this case, the config parser won't detect any times, and if specified will error out. In the active file, we have the true config that the server will use. With this new set up, we'll exploit these build flags heavily in order to create a generalized framework for adding additional sub RPC servers. --- lnrpc/signrpc/config_active.go | 33 +++++++++++++++++++++++++++++++++ lnrpc/signrpc/config_default.go | 10 ++++++++++ 2 files changed, 43 insertions(+) create mode 100644 lnrpc/signrpc/config_active.go create mode 100644 lnrpc/signrpc/config_default.go diff --git a/lnrpc/signrpc/config_active.go b/lnrpc/signrpc/config_active.go new file mode 100644 index 000000000..ab576d9d1 --- /dev/null +++ b/lnrpc/signrpc/config_active.go @@ -0,0 +1,33 @@ +// +build signerrpc + +package signrpc + +import ( + "github.com/lightningnetwork/lnd/lnwallet" + "github.com/lightningnetwork/lnd/macaroons" +) + +// Config is the primary configuration struct for the signer RPC server. It +// contains all the items required for the signer rpc server to carry out its +// duties. The fields with struct tags are meant to be parsed as normal +// configuration options, while if able to be populated, the latter fields MUST +// also be specified. +type Config struct { + // SignerMacPath is the path for the signer macaroon. If unspecified + // then we assume that the macaroon will be found under the network + // directory, named DefaultSignerMacFilename. + SignerMacPath string `long:"signermacaroonpath" description:"Path to the signer macaroon"` + + // NetworkDir is the main network directory wherein the signer rpc + // server will find the macaroon named DefaultSignerMacFilename. + NetworkDir string + + // MacService is the main macaroon service that we'll use to handle + // authentication for the signer rpc server. + MacService *macaroons.Service + + // Signer is the signer instance that backs the signer RPC server. The + // job of the signer RPC server is simply to proxy valid requests to + // the active signer instance. + Signer lnwallet.Signer +} diff --git a/lnrpc/signrpc/config_default.go b/lnrpc/signrpc/config_default.go new file mode 100644 index 000000000..3341296fc --- /dev/null +++ b/lnrpc/signrpc/config_default.go @@ -0,0 +1,10 @@ +// +build !signerrpc + +package signrpc + +// Config is the primary configuration struct for the signer RPC server. It +// contains all the items required for the signer rpc server to carry out its +// duties. The fields with struct tags are meant to be parsed as normal +// configuration options, while if able to be populated, the latter fields MUST +// also be specified. +type Config struct{}