Skip to content

Commit 26ac69a

Browse files
committed
mod+terminal: add pool
1 parent 41e93f9 commit 26ac69a

File tree

8 files changed

+132
-9
lines changed

8 files changed

+132
-9
lines changed

Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ RUN apk add --no-cache --update alpine-sdk \
3232
&& make install \
3333
&& go install -v -trimpath github.com/lightningnetwork/lnd/cmd/lncli \
3434
&& go install -v -trimpath github.com/lightninglabs/faraday/cmd/frcli \
35-
&& go install -v -trimpath github.com/lightninglabs/loop/cmd/loop
35+
&& go install -v -trimpath github.com/lightninglabs/loop/cmd/loop \
36+
&& go install -v -trimpath github.com/lightninglabs/pool/cmd/pool
3637

3738
# Start a new, final image to reduce size.
3839
FROM alpine as final
@@ -48,6 +49,7 @@ COPY --from=builder /go/bin/litd /bin/
4849
COPY --from=builder /go/bin/lncli /bin/
4950
COPY --from=builder /go/bin/frcli /bin/
5051
COPY --from=builder /go/bin/loop /bin/
52+
COPY --from=builder /go/bin/pool /bin/
5153

5254
# Add bash.
5355
RUN apk add --no-cache \

config.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"github.com/lightninglabs/faraday/frdrpc"
1919
"github.com/lightninglabs/lndclient"
2020
"github.com/lightninglabs/loop/loopd"
21+
"github.com/lightninglabs/pool"
2122
"github.com/lightningnetwork/lnd"
2223
"github.com/lightningnetwork/lnd/build"
2324
"github.com/lightningnetwork/lnd/cert"
@@ -64,6 +65,7 @@ var (
6465
lndDefaultConfig = lnd.DefaultConfig()
6566
faradayDefaultConfig = faraday.DefaultConfig()
6667
loopDefaultConfig = loopd.DefaultConfig()
68+
poolDefaultConfig = pool.DefaultConfig()
6769

6870
// defaultLitDir is the default directory where LiT tries to find its
6971
// configuration file and store its data (in remote lnd node). This is a
@@ -128,6 +130,7 @@ type Config struct {
128130

129131
Faraday *faraday.Config `group:"Faraday options" namespace:"faraday"`
130132
Loop *loopd.Config `group:"Loop options" namespace:"loop"`
133+
Pool *pool.Config `group:"pool" namespace:"pool"`
131134

132135
Lnd *lnd.Config `group:"Integrated lnd (use when lnd-mode=integrated)" namespace:"lnd"`
133136

@@ -237,6 +240,7 @@ func defaultConfig() *Config {
237240
Faraday: &faradayDefaultConfig,
238241
faradayRpcConfig: &frdrpc.Config{},
239242
Loop: &loopDefaultConfig,
243+
Pool: &poolDefaultConfig,
240244
}
241245
}
242246

@@ -321,6 +325,11 @@ func loadAndValidateConfig() (*Config, error) {
321325
return nil, err
322326
}
323327

328+
cfg.Pool.Network = cfg.network
329+
if err := pool.Validate(cfg.Pool); err != nil {
330+
return nil, err
331+
}
332+
324333
cfg.Faraday.Network = cfg.network
325334
if err := faraday.ValidateConfig(cfg.Faraday); err != nil {
326335
return nil, err

go.mod

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ require (
44
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f
55
github.com/btcsuite/btcutil v1.0.2
66
github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect
7-
github.com/grpc-ecosystem/grpc-gateway v1.14.3
7+
github.com/grpc-ecosystem/grpc-gateway v1.14.6
88
github.com/improbable-eng/grpc-web v0.12.0
99
github.com/jessevdk/go-flags v1.4.0
10+
github.com/lightninglabs/aperture v0.1.3-beta
1011
github.com/lightninglabs/faraday v0.2.2-alpha
1112
github.com/lightninglabs/lndclient v0.11.0-3
1213
github.com/lightninglabs/loop v0.11.0-beta.0.20201030095204-66eff361c2ef
14+
github.com/lightninglabs/pool v0.3.2-alpha
1315
github.com/lightningnetwork/lnd v0.11.1-beta
1416
github.com/lightningnetwork/lnd/cert v1.0.3
1517
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f
@@ -20,7 +22,7 @@ require (
2022
golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899
2123
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e // indirect
2224
golang.org/x/sys v0.0.0-20200406155108-e3b113bbe6a4 // indirect
23-
google.golang.org/grpc v1.28.0
25+
google.golang.org/grpc v1.29.1
2426
gopkg.in/macaroon-bakery.v2 v2.1.0
2527
gopkg.in/macaroon.v2 v2.1.0
2628
)

go.sum

Lines changed: 60 additions & 2 deletions
Large diffs are not rendered by default.

log.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package terminal
22

33
import (
44
"github.com/btcsuite/btclog"
5+
apertureLsat "github.com/lightninglabs/aperture/lsat"
56
"github.com/lightninglabs/faraday"
67
"github.com/lightninglabs/faraday/dataset"
78
"github.com/lightninglabs/faraday/fiat"
@@ -12,8 +13,13 @@ import (
1213
"github.com/lightninglabs/loop"
1314
"github.com/lightninglabs/loop/loopdb"
1415
"github.com/lightninglabs/loop/lsat"
16+
"github.com/lightninglabs/pool/account"
17+
"github.com/lightninglabs/pool/auctioneer"
18+
"github.com/lightninglabs/pool/clientdb"
19+
"github.com/lightninglabs/pool/order"
1520
"github.com/lightningnetwork/lnd"
1621
"github.com/lightningnetwork/lnd/build"
22+
"github.com/lightningnetwork/lnd/signal"
1723
"google.golang.org/grpc/grpclog"
1824
)
1925

@@ -70,6 +76,14 @@ func SetupLoggers(root *build.RotatingLogWriter) {
7076

7177
// Setup the gRPC loggers too.
7278
grpclog.SetLoggerV2(NewGrpcLogLogger(root, GrpcLogSubsystem))
79+
80+
// Add llm loggers to lnd's root logger.
81+
lnd.AddSubLogger(root, auctioneer.Subsystem, auctioneer.UseLogger)
82+
lnd.AddSubLogger(root, order.Subsystem, order.UseLogger)
83+
lnd.AddSubLogger(root, "SGNL", signal.UseLogger)
84+
lnd.AddSubLogger(root, account.Subsystem, account.UseLogger)
85+
lnd.AddSubLogger(root, apertureLsat.Subsystem, apertureLsat.UseLogger)
86+
lnd.AddSubLogger(root, clientdb.Subsystem, clientdb.UseLogger)
7387
}
7488

7589
// NewGrpcLogLogger creates a new grpclog compatible logger and attaches it as

rpc_proxy.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func newRpcProxy(cfg *Config, validator macaroons.MacaroonValidator,
109109
// | director | | local subserver |
110110
// +---+----------------------+ | - loop |
111111
// | | - faraday |
112-
// v authenticated call | |
112+
// v authenticated call | - pool |
113113
// +---+----------------------+ +--------------------+
114114
// | lnd (remote or local) |
115115
// +--------------------------+
@@ -324,6 +324,9 @@ func (p *rpcProxy) basicAuthToMacaroon(ctx context.Context,
324324
case isFaradayURI(requestURI):
325325
macPath = p.cfg.Faraday.MacaroonPath
326326

327+
case isPoolURI(requestURI):
328+
macPath = p.cfg.Pool.MacaroonPath
329+
327330
default:
328331
return ctx, fmt.Errorf("unknown gRPC web request: %v",
329332
requestURI)

subserver_permissions.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package terminal
33
import (
44
"github.com/lightninglabs/faraday/frdrpc"
55
"github.com/lightninglabs/loop/loopd"
6+
"github.com/lightninglabs/pool"
67
"github.com/lightningnetwork/lnd"
78
"gopkg.in/macaroon-bakery.v2/bakery"
89
)
@@ -11,14 +12,17 @@ import (
1112
// permissions.
1213
func getSubserverPermissions() map[string][]bakery.Op {
1314
mapSize := len(frdrpc.RequiredPermissions) +
14-
len(loopd.RequiredPermissions)
15+
len(loopd.RequiredPermissions) + len(pool.RequiredPermissions)
1516
result := make(map[string][]bakery.Op, mapSize)
1617
for key, value := range frdrpc.RequiredPermissions {
1718
result[key] = value
1819
}
1920
for key, value := range loopd.RequiredPermissions {
2021
result[key] = value
2122
}
23+
for key, value := range pool.RequiredPermissions {
24+
result[key] = value
25+
}
2226
return result
2327
}
2428

@@ -55,3 +59,9 @@ func isFaradayURI(uri string) bool {
5559
_, ok := frdrpc.RequiredPermissions[uri]
5660
return ok
5761
}
62+
63+
// isPoolURI returns true if the given URI belongs to an RPC of poold.
64+
func isPoolURI(uri string) bool {
65+
_, ok := pool.RequiredPermissions[uri]
66+
return ok
67+
}

terminal.go

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import (
2121
"github.com/lightninglabs/loop"
2222
"github.com/lightninglabs/loop/loopd"
2323
"github.com/lightninglabs/loop/looprpc"
24+
"github.com/lightninglabs/pool"
25+
"github.com/lightninglabs/pool/poolrpc"
2426
"github.com/lightningnetwork/lnd"
2527
"github.com/lightningnetwork/lnd/build"
2628
"github.com/lightningnetwork/lnd/lnrpc"
@@ -66,6 +68,9 @@ type LightningTerminal struct {
6668
loopServer *loopd.Daemon
6769
loopStarted bool
6870

71+
poolServer *pool.Server
72+
poolStarted bool
73+
6974
rpcProxy *rpcProxy
7075
httpServer *http.Server
7176
}
@@ -90,6 +95,7 @@ func (g *LightningTerminal) Run() error {
9095
// lnd once it's fully started.
9196
g.faradayServer = frdrpc.NewRPCServer(g.cfg.faradayRpcConfig)
9297
g.loopServer = loopd.New(g.cfg.Loop, nil)
98+
g.poolServer = pool.NewServer(g.cfg.Pool)
9399
g.rpcProxy = newRpcProxy(g.cfg, g, getAllPermissions())
94100

95101
// Overwrite the loop daemon's user agent name so it sends "litd"
@@ -318,6 +324,12 @@ func (g *LightningTerminal) startSubservers() error {
318324
}
319325
g.loopStarted = true
320326

327+
err = g.poolServer.StartAsSubserver(basicClient, g.lndClient)
328+
if err != nil {
329+
return err
330+
}
331+
g.poolStarted = true
332+
321333
return nil
322334
}
323335

@@ -329,6 +341,7 @@ func (g *LightningTerminal) RegisterGrpcSubserver(grpcServer *grpc.Server) error
329341
g.lndGrpcServer = grpcServer
330342
frdrpc.RegisterFaradayServerServer(grpcServer, g.faradayServer)
331343
looprpc.RegisterSwapClientServer(grpcServer, g.loopServer)
344+
poolrpc.RegisterTraderServer(grpcServer, g.poolServer)
332345
return nil
333346
}
334347

@@ -347,7 +360,14 @@ func (g *LightningTerminal) RegisterRestSubserver(ctx context.Context,
347360
return err
348361
}
349362

350-
return looprpc.RegisterSwapClientHandlerFromEndpoint(
363+
err = looprpc.RegisterSwapClientHandlerFromEndpoint(
364+
ctx, mux, endpoint, dialOpts,
365+
)
366+
if err != nil {
367+
return err
368+
}
369+
370+
return poolrpc.RegisterTraderHandlerFromEndpoint(
351371
ctx, mux, endpoint, dialOpts,
352372
)
353373
}
@@ -384,6 +404,11 @@ func (g *LightningTerminal) ValidateMacaroon(ctx context.Context,
384404
return g.faradayServer.ValidateMacaroon(
385405
ctx, requiredPermissions, fullMethod,
386406
)
407+
408+
case isPoolURI(fullMethod):
409+
return g.poolServer.ValidateMacaroon(
410+
ctx, requiredPermissions, fullMethod,
411+
)
387412
}
388413

389414
// Because lnd will spin up its own gRPC server with macaroon
@@ -482,7 +507,7 @@ func (g *LightningTerminal) shutdown() error {
482507
// | director | | local subserver |
483508
// +---+----------------------+ | - loop |
484509
// | | - faraday |
485-
// v authenticated call | |
510+
// v authenticated call | - pool |
486511
// +---+----------------------+ +--------------------+
487512
// | lnd (remote or local) |
488513
// +--------------------------+

0 commit comments

Comments
 (0)