@@ -216,14 +216,14 @@ type LightningTerminal struct {
216
216
middleware * mid.Manager
217
217
middlewareStarted bool
218
218
219
- accountsStore accounts.Store
220
219
accountService * accounts.InterceptorService
221
220
accountServiceStarted bool
222
221
223
222
accountRpcServer * accounts.RPCServer
224
223
224
+ stores * stores
225
+
225
226
firewallDB * firewalldb.DB
226
- sessionDB * session.BoltStore
227
227
228
228
restHandler http.Handler
229
229
restCancel func ()
@@ -236,6 +236,16 @@ func New() *LightningTerminal {
236
236
}
237
237
}
238
238
239
+ // stores holds a collection of the DB stores that are used by LiT.
240
+ type stores struct {
241
+ accounts accounts.Store
242
+ sessions session.Store
243
+
244
+ // close is a callback that can be used to close all the stores in the
245
+ // stores struct.
246
+ close func () error
247
+ }
248
+
239
249
// Run starts everything and then blocks until either the application is shut
240
250
// down or a critical error happens.
241
251
func (g * LightningTerminal ) Run (ctx context.Context ) error {
@@ -421,14 +431,13 @@ func (g *LightningTerminal) start(ctx context.Context) error {
421
431
return fmt .Errorf ("could not create network directory: %v" , err )
422
432
}
423
433
424
- clock := clock .NewDefaultClock ()
425
- g .accountsStore , err = NewAccountStore (g .cfg , clock )
434
+ g .stores , err = NewStores (g .cfg , clock .NewDefaultClock ())
426
435
if err != nil {
427
- return fmt .Errorf ("error creating accounts store : %w " , err )
436
+ return fmt .Errorf ("could not create stores : %v " , err )
428
437
}
429
438
430
439
g .accountService , err = accounts .NewService (
431
- g .accountsStore , accountServiceErrCallback ,
440
+ g .stores . accounts , accountServiceErrCallback ,
432
441
)
433
442
if err != nil {
434
443
return fmt .Errorf ("error creating account service: %v" , err )
@@ -448,16 +457,8 @@ func (g *LightningTerminal) start(ctx context.Context) error {
448
457
449
458
g .ruleMgrs = rules .NewRuleManagerSet ()
450
459
451
- // Create an instance of the local Terminal Connect session store DB.
452
- g .sessionDB , err = session .NewDB (
453
- networkDir , session .DBFilename , clock , g .accountsStore ,
454
- )
455
- if err != nil {
456
- return fmt .Errorf ("error creating session DB: %v" , err )
457
- }
458
-
459
460
g .firewallDB , err = firewalldb .NewDB (
460
- networkDir , firewalldb .DBFilename , g .sessionDB ,
461
+ networkDir , firewalldb .DBFilename , g .stores . sessions ,
461
462
)
462
463
if err != nil {
463
464
return fmt .Errorf ("error creating firewall DB: %v" , err )
@@ -493,7 +494,7 @@ func (g *LightningTerminal) start(ctx context.Context) error {
493
494
}
494
495
495
496
g .sessionRpcServer , err = newSessionRPCServer (& sessionRpcServerConfig {
496
- db : g .sessionDB ,
497
+ db : g .stores . sessions ,
497
498
basicAuth : g .rpcProxy .basicAuth ,
498
499
grpcOptions : []grpc.ServerOption {
499
500
grpc .CustomCodec (grpcProxy .Codec ()), // nolint: staticcheck,
@@ -1086,7 +1087,7 @@ func (g *LightningTerminal) startInternalSubServers(ctx context.Context,
1086
1087
1087
1088
privacyMapper := firewall .NewPrivacyMapper (
1088
1089
g .firewallDB .PrivacyDB , firewall .CryptoRandIntn ,
1089
- g .sessionDB ,
1090
+ g .stores . sessions ,
1090
1091
)
1091
1092
1092
1093
mw := []mid.RequestInterceptor {
@@ -1097,7 +1098,7 @@ func (g *LightningTerminal) startInternalSubServers(ctx context.Context,
1097
1098
1098
1099
if ! g .cfg .Autopilot .Disable {
1099
1100
ruleEnforcer := firewall .NewRuleEnforcer (
1100
- g .firewallDB , g .firewallDB , g .sessionDB ,
1101
+ g .firewallDB , g .firewallDB , g .stores . sessions ,
1101
1102
g .autopilotClient .ListFeaturePerms ,
1102
1103
g .permsMgr , g .lndClient .NodePubkey ,
1103
1104
g .lndClient .Router ,
@@ -1436,14 +1437,6 @@ func (g *LightningTerminal) shutdownSubServers() error {
1436
1437
}
1437
1438
}
1438
1439
1439
- if g .accountsStore != nil {
1440
- err = g .accountsStore .Close ()
1441
- if err != nil {
1442
- log .Errorf ("Error closing accounts store: %v" , err )
1443
- returnErr = err
1444
- }
1445
- }
1446
-
1447
1440
if g .middlewareStarted {
1448
1441
g .middleware .Stop ()
1449
1442
}
@@ -1462,9 +1455,10 @@ func (g *LightningTerminal) shutdownSubServers() error {
1462
1455
}
1463
1456
}
1464
1457
1465
- if g .sessionDB != nil {
1466
- if err := g .sessionDB .Close (); err != nil {
1467
- log .Errorf ("Error closing session DB: %v" , err )
1458
+ if g .stores != nil {
1459
+ err = g .stores .close ()
1460
+ if err != nil {
1461
+ log .Errorf ("Error closing stores: %v" , err )
1468
1462
returnErr = err
1469
1463
}
1470
1464
}
0 commit comments