86 lines
1.7 KiB
Go
86 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/lightningnetwork/lnd/lnrpc"
|
|
"github.com/urfave/cli"
|
|
|
|
"google.golang.org/grpc"
|
|
)
|
|
|
|
func fatal(err error) {
|
|
fmt.Fprintf(os.Stderr, "[lncli] %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
func getClient(ctx *cli.Context) (lnrpc.LightningClient, func()) {
|
|
conn := getClientConn(ctx)
|
|
|
|
cleanUp := func() {
|
|
conn.Close()
|
|
}
|
|
|
|
return lnrpc.NewLightningClient(conn), cleanUp
|
|
}
|
|
|
|
func getClientConn(ctx *cli.Context) *grpc.ClientConn {
|
|
// TODO(roasbeef): macaroon based auth
|
|
// * http://www.grpc.io/docs/guides/auth.html
|
|
// * http://research.google.com/pubs/pub41892.html
|
|
// * https://github.com/go-macaroon/macaroon
|
|
opts := []grpc.DialOption{grpc.WithInsecure()}
|
|
|
|
conn, err := grpc.Dial(ctx.GlobalString("rpcserver"), opts...)
|
|
if err != nil {
|
|
fatal(err)
|
|
}
|
|
|
|
return conn
|
|
}
|
|
|
|
func main() {
|
|
app := cli.NewApp()
|
|
app.Name = "lncli"
|
|
app.Version = "0.1"
|
|
app.Usage = "control plane for your Lightning Network Daemon (lnd)"
|
|
app.Flags = []cli.Flag{
|
|
cli.StringFlag{
|
|
Name: "rpcserver",
|
|
Value: "localhost:10009",
|
|
Usage: "host:port of ln daemon",
|
|
},
|
|
}
|
|
app.Commands = []cli.Command{
|
|
NewAddressCommand,
|
|
SendManyCommand,
|
|
SendCoinsCommand,
|
|
ConnectCommand,
|
|
OpenChannelCommand,
|
|
CloseChannelCommand,
|
|
ListPeersCommand,
|
|
WalletBalanceCommand,
|
|
ChannelBalanceCommand,
|
|
GetInfoCommand,
|
|
PendingChannelsCommand,
|
|
SendPaymentCommand,
|
|
AddInvoiceCommand,
|
|
LookupInvoiceCommand,
|
|
ListInvoicesCommand,
|
|
ListChannelsCommand,
|
|
ListPaymentsCommand,
|
|
DescribeGraphCommand,
|
|
GetChanInfoCommand,
|
|
GetNodeInfoCommand,
|
|
QueryRouteCommand,
|
|
GetNetworkInfoCommand,
|
|
DebugLevel,
|
|
DecodePayReq,
|
|
}
|
|
|
|
if err := app.Run(os.Args); err != nil {
|
|
fatal(err)
|
|
}
|
|
}
|