Skip to content

Commit 237f49f

Browse files
authored
Merge pull request #419 from ellemouton/rpcMWPackage
multi: rpcmiddleware package
2 parents fb825ab + 3f291a8 commit 237f49f

File tree

9 files changed

+1014
-0
lines changed

9 files changed

+1014
-0
lines changed

config.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"github.com/lightninglabs/faraday"
1919
"github.com/lightninglabs/faraday/chain"
2020
"github.com/lightninglabs/faraday/frdrpcserver"
21+
mid "github.com/lightninglabs/lightning-terminal/rpcmiddleware"
2122
"github.com/lightninglabs/lndclient"
2223
"github.com/lightninglabs/loop/loopd"
2324
"github.com/lightninglabs/pool"
@@ -183,6 +184,8 @@ type Config struct {
183184
PoolMode string `long:"pool-mode" description:"The mode to run pool in, either 'integrated' (default) or 'remote'. 'integrated' means poold is started alongside the UI and everything is stored in pool's main data directory, configure everything by using the --pool.* flags. 'remote' means the UI connects to an existing poold node and acts as a proxy for gRPC calls to it." choice:"integrated" choice:"remote"`
184185
Pool *pool.Config `group:"Integrated pool options (use when pool-mode=integrated)" namespace:"pool"`
185186

187+
RPCMiddleware *mid.Config `group:"RPC middleware options" namespace:"rpcmiddleware"`
188+
186189
// faradayRpcConfig is a subset of faraday's full configuration that is
187190
// passed into faraday's RPC server.
188191
faradayRpcConfig *frdrpcserver.Config
@@ -321,6 +324,7 @@ func defaultConfig() *Config {
321324
Loop: &loopDefaultConfig,
322325
PoolMode: defaultPoolMode,
323326
Pool: &poolDefaultConfig,
327+
RPCMiddleware: mid.DefaultConfig(),
324328
FirstLNCConnDeadline: defaultFirstLNCConnTimeout,
325329
}
326330
}
@@ -382,6 +386,14 @@ func loadAndValidateConfig(interceptor signal.Interceptor) (*Config, error) {
382386
return nil, err
383387
}
384388

389+
// To enable the rpc middleware interceptor, we need LND's RPC
390+
// middleware interceptor to be enabled. In remote mode we can't
391+
// influence whether that's enabled on lnd. But in integrated mode we
392+
// can overwrite the flag here.
393+
if !cfg.lndRemote && !cfg.RPCMiddleware.Disabled {
394+
cfg.Lnd.RPCMiddleware.Enable = true
395+
}
396+
385397
// Validate the lightning-terminal config options.
386398
litDir := lnd.CleanAndExpandPath(preCfg.LitDir)
387399
cfg.LetsEncryptDir = lncfg.CleanAndExpandPath(cfg.LetsEncryptDir)

log.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"github.com/btcsuite/btclog"
55
"github.com/lightninglabs/faraday"
66
"github.com/lightninglabs/lightning-node-connect/mailbox"
7+
mid "github.com/lightninglabs/lightning-terminal/rpcmiddleware"
78
"github.com/lightninglabs/lightning-terminal/session"
89
"github.com/lightninglabs/loop/loopd"
910
"github.com/lightninglabs/pool"
@@ -59,6 +60,7 @@ func SetupLoggers(root *build.RotatingLogWriter, intercept signal.Interceptor) {
5960
lnd.AddSubLogger(root, Subsystem, intercept, UseLogger)
6061
lnd.AddSubLogger(root, session.Subsystem, intercept, session.UseLogger)
6162
lnd.AddSubLogger(root, mailbox.Subsystem, intercept, mailbox.UseLogger)
63+
lnd.AddSubLogger(root, mid.Subsystem, intercept, mid.UseLogger)
6264

6365
// Add daemon loggers to lnd's root logger.
6466
faraday.SetupLoggers(root, intercept)

rpcmiddleware/config.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package rpcmiddleware
2+
3+
import "time"
4+
5+
const (
6+
// DefaultInterceptTimeout is the default maximum time we're allowed to
7+
// take to respond to an RPC middleware interception request.
8+
DefaultInterceptTimeout = time.Second * 2
9+
)
10+
11+
// Config is the configuration struct for the RPC middleware.
12+
type Config struct {
13+
Disabled bool `long:"disabled" description:"Disable the RPC middleware"`
14+
InterceptTimeout time.Duration `long:"intercept-timeout" description:"The maximum time the RPC middleware is allowed to take for intercepting each RPC request"`
15+
}
16+
17+
// DefaultConfig returns the default RPC middleware configuration.
18+
func DefaultConfig() *Config {
19+
return &Config{
20+
InterceptTimeout: DefaultInterceptTimeout,
21+
}
22+
}

0 commit comments

Comments
 (0)