add gitignore, cli shell

This commit is contained in:
Tadge Dryja 2015-12-30 16:19:09 -04:00
parent a93b6dcee4
commit 31f3df2183
9 changed files with 405 additions and 4 deletions

35
.gitignore vendored Normal file

@ -0,0 +1,35 @@
# ---> Go
# Compiled Object files, Static and Dynamic libs (Shared Objects)
*.o
*.a
*.so
# Folders
_obj
_test
# Architecture specific extensions/prefixes
*.[568vq]
[568vq].out
*.cgo1.go
*.cgo2.c
_cgo_defun.c
_cgo_gotypes.go
_cgo_export.*
_testmain.go
*.exe
*.test
*.prof
plasma
cmd/cmd
**.key
**.hex
cmd/lncli/lncli
test_wal/*

@ -7,7 +7,7 @@ import (
"github.com/codegangsta/cli"
"golang.org/x/net/context"
"li.lan/labs/plasma/rpcprotos"
"li.lan/labs/plasma/lnrpc"
)
func printRespJson(resp interface{}) {
@ -21,6 +21,12 @@ func printRespJson(resp interface{}) {
out.WriteTo(os.Stdout)
}
var ShellCommand = cli.Command{
Name: "shell",
Usage: "enter interactive shell",
Action: shell,
}
var NewAddressCommand = cli.Command{
Name: "newaddress",
Usage: "gets the next address in the HD chain",

@ -6,7 +6,7 @@ import (
"os"
"github.com/codegangsta/cli"
"li.lan/labs/plasma/rpcprotos"
"li.lan/labs/plasma/lnrpc"
"google.golang.org/grpc"
)
@ -52,6 +52,7 @@ func main() {
app.Commands = []cli.Command{
NewAddressCommand,
SendManyCommand,
ShellCommand,
}
if err := app.Run(os.Args); err != nil {
fatal(err)

147
cmd/lncli/shell.go Normal file

@ -0,0 +1,147 @@
package main
import (
"bufio"
"fmt"
"log"
"os"
"strings"
"github.com/codegangsta/cli"
"google.golang.org/grpc"
)
func shell(z *cli.Context) {
fmt.Printf("LN shell v0.0FTW\n")
for {
reader := bufio.NewReaderSize(os.Stdin, 4000)
fmt.Printf("->")
msg, err := reader.ReadString('\n')
if err != nil {
log.Fatal(err)
}
cmdslice := strings.Fields(msg)
if len(cmdslice) < 1 {
continue
}
fmt.Printf("entered command: %s\n", msg)
err = Shellparse(cmdslice)
if err != nil {
log.Fatal(err)
}
}
}
func Shellparse(cmdslice []string) error {
var err error
var args []string
cmd := cmdslice[0]
if len(cmdslice) > 1 {
args = cmdslice[1:]
}
if cmd == "exit" || cmd == "quit" {
return fmt.Errorf("User exit")
}
// if cmd == "help" {
// Help()
// return nil
// }
// if cmd == "pbx" {
// err = PbxConnect(args)
// if err != nil {
// fmt.Printf("pbx error: %s\n", err)
// }
// return nil
// }
// if cmd == "lnwho" {
// err = LnWho(args)
// if err != nil {
// fmt.Printf("LN WhoAreYou error: %s\n", err)
// }
// return nil
// }
// if cmd == "lnd" {
// err = LnDisconnect(args)
// if err != nil {
// fmt.Printf("LN disconnect error: %s\n", err)
// }
// return nil
// }
if cmd == "lnhi" {
err = LnChat(args)
if err != nil {
fmt.Printf("LN chat error: %s\n", err)
}
return nil
}
if cmd == "lnc" {
err = LnConnect(args)
if err != nil {
fmt.Printf("LN connect error: %s\n", err)
}
return nil
}
// if cmd == "lnl" {
// err = LnListen(args)
// if err != nil {
// fmt.Printf("LN listen error: %s\n", err)
// }
// return nil
// }
// if cmd == "txsend" {
// err = TxSend(args)
// if err != nil {
// fmt.Printf("txsend error: %s\n", err)
// }
// return nil
// }
if cmd == "rpc" {
err = RpcConnect(args)
if err != nil {
fmt.Printf("RPC connect error: %s\n", err)
}
return nil
}
fmt.Printf("Command not recognized.\n")
return nil
}
func RpcConnect(args []string) error {
// client := getClient(ctx)
opts := []grpc.DialOption{grpc.WithInsecure()}
conn, err := grpc.Dial("127.0.0.1:10000", opts...)
if err != nil {
return (err)
}
state, err := conn.State()
if err != nil {
return (err)
}
fmt.Printf("connection state: %s\n", state.String())
err = conn.Close()
if err != nil {
return (err)
}
return nil
}
func LnConnect(args []string) error {
fmt.Printf("lnconnect, %d args\n", len(args))
return nil
}
// For testing. Syntax: lnhi hello world
func LnChat(args []string) error {
var chat string
for _, s := range args {
chat += s + " "
}
// msg := append([]byte{lnwire.MSGID_TEXTCHAT}, []byte(chat)...)
fmt.Printf("will send text message: %s\n", chat)
return nil
}

3
lnrpc/gen_protos.sh Executable file

@ -0,0 +1,3 @@
#!/bin/sh
protoc -I . rpc.proto --go_out=plugins=grpc:.

188
lnrpc/rpc.pb.go Normal file

@ -0,0 +1,188 @@
// Code generated by protoc-gen-go.
// source: rpc.proto
// DO NOT EDIT!
/*
Package lnrpc is a generated protocol buffer package.
It is generated from these files:
rpc.proto
It has these top-level messages:
SendManyRequest
SendManyResponse
NewAddressRequest
NewAddressResponse
*/
package lnrpc
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
type SendManyRequest struct {
AddrToAmount map[string]int64 `protobuf:"bytes,1,rep,name=AddrToAmount" json:"AddrToAmount,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
}
func (m *SendManyRequest) Reset() { *m = SendManyRequest{} }
func (m *SendManyRequest) String() string { return proto.CompactTextString(m) }
func (*SendManyRequest) ProtoMessage() {}
func (*SendManyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
func (m *SendManyRequest) GetAddrToAmount() map[string]int64 {
if m != nil {
return m.AddrToAmount
}
return nil
}
type SendManyResponse struct {
Txid string `protobuf:"bytes,1,opt,name=txid" json:"txid,omitempty"`
}
func (m *SendManyResponse) Reset() { *m = SendManyResponse{} }
func (m *SendManyResponse) String() string { return proto.CompactTextString(m) }
func (*SendManyResponse) ProtoMessage() {}
func (*SendManyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
type NewAddressRequest struct {
}
func (m *NewAddressRequest) Reset() { *m = NewAddressRequest{} }
func (m *NewAddressRequest) String() string { return proto.CompactTextString(m) }
func (*NewAddressRequest) ProtoMessage() {}
func (*NewAddressRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
type NewAddressResponse struct {
Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"`
}
func (m *NewAddressResponse) Reset() { *m = NewAddressResponse{} }
func (m *NewAddressResponse) String() string { return proto.CompactTextString(m) }
func (*NewAddressResponse) ProtoMessage() {}
func (*NewAddressResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
func init() {
proto.RegisterType((*SendManyRequest)(nil), "lnrpc.SendManyRequest")
proto.RegisterType((*SendManyResponse)(nil), "lnrpc.SendManyResponse")
proto.RegisterType((*NewAddressRequest)(nil), "lnrpc.NewAddressRequest")
proto.RegisterType((*NewAddressResponse)(nil), "lnrpc.NewAddressResponse")
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// Client API for Lightning service
type LightningClient interface {
SendMany(ctx context.Context, in *SendManyRequest, opts ...grpc.CallOption) (*SendManyResponse, error)
NewAddress(ctx context.Context, in *NewAddressRequest, opts ...grpc.CallOption) (*NewAddressResponse, error)
}
type lightningClient struct {
cc *grpc.ClientConn
}
func NewLightningClient(cc *grpc.ClientConn) LightningClient {
return &lightningClient{cc}
}
func (c *lightningClient) SendMany(ctx context.Context, in *SendManyRequest, opts ...grpc.CallOption) (*SendManyResponse, error) {
out := new(SendManyResponse)
err := grpc.Invoke(ctx, "/lnrpc.Lightning/SendMany", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *lightningClient) NewAddress(ctx context.Context, in *NewAddressRequest, opts ...grpc.CallOption) (*NewAddressResponse, error) {
out := new(NewAddressResponse)
err := grpc.Invoke(ctx, "/lnrpc.Lightning/NewAddress", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for Lightning service
type LightningServer interface {
SendMany(context.Context, *SendManyRequest) (*SendManyResponse, error)
NewAddress(context.Context, *NewAddressRequest) (*NewAddressResponse, error)
}
func RegisterLightningServer(s *grpc.Server, srv LightningServer) {
s.RegisterService(&_Lightning_serviceDesc, srv)
}
func _Lightning_SendMany_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error) (interface{}, error) {
in := new(SendManyRequest)
if err := dec(in); err != nil {
return nil, err
}
out, err := srv.(LightningServer).SendMany(ctx, in)
if err != nil {
return nil, err
}
return out, nil
}
func _Lightning_NewAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error) (interface{}, error) {
in := new(NewAddressRequest)
if err := dec(in); err != nil {
return nil, err
}
out, err := srv.(LightningServer).NewAddress(ctx, in)
if err != nil {
return nil, err
}
return out, nil
}
var _Lightning_serviceDesc = grpc.ServiceDesc{
ServiceName: "lnrpc.Lightning",
HandlerType: (*LightningServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "SendMany",
Handler: _Lightning_SendMany_Handler,
},
{
MethodName: "NewAddress",
Handler: _Lightning_NewAddress_Handler,
},
},
Streams: []grpc.StreamDesc{},
}
var fileDescriptor0 = []byte{
// 241 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x2c, 0x2a, 0x48, 0xd6,
0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0xcd, 0xc9, 0x03, 0x72, 0x94, 0xda, 0x18, 0xb9, 0xf8,
0x83, 0x53, 0xf3, 0x52, 0x7c, 0x13, 0xf3, 0x2a, 0x83, 0x52, 0x0b, 0x4b, 0x53, 0x8b, 0x4b, 0x84,
0xec, 0xb8, 0x78, 0x1c, 0x53, 0x52, 0x8a, 0x42, 0xf2, 0x1d, 0x73, 0xf3, 0x4b, 0xf3, 0x4a, 0x24,
0x18, 0x15, 0x98, 0x35, 0xb8, 0x8d, 0x34, 0xf4, 0xc0, 0x3a, 0xf4, 0xd0, 0x54, 0xeb, 0x21, 0x2b,
0x75, 0xcd, 0x2b, 0x29, 0xaa, 0x94, 0x32, 0xe6, 0x12, 0xc4, 0x10, 0x14, 0xe2, 0xe6, 0x62, 0xce,
0x4e, 0xad, 0x04, 0x9a, 0xc5, 0xa8, 0xc1, 0x29, 0xc4, 0xcb, 0xc5, 0x5a, 0x96, 0x98, 0x53, 0x9a,
0x2a, 0xc1, 0x04, 0xe4, 0x32, 0x5b, 0x31, 0x59, 0x30, 0x2a, 0x29, 0x70, 0x09, 0x20, 0x4c, 0x2e,
0x2e, 0xc8, 0xcf, 0x2b, 0x4e, 0x15, 0xe2, 0xe1, 0x62, 0x29, 0xa9, 0xc8, 0x4c, 0x81, 0x68, 0x52,
0x12, 0xe6, 0x12, 0xf4, 0x4b, 0x2d, 0x07, 0x99, 0x9c, 0x5a, 0x5c, 0x0c, 0xb5, 0x5d, 0x49, 0x95,
0x4b, 0x08, 0x59, 0x10, 0xaa, 0x91, 0x9f, 0x8b, 0x3d, 0x11, 0x22, 0x04, 0xd1, 0x6b, 0xd4, 0xcd,
0xc8, 0xc5, 0xe9, 0x93, 0x99, 0x9e, 0x51, 0x92, 0x97, 0x99, 0x97, 0x2e, 0x64, 0xcd, 0xc5, 0x01,
0xb3, 0x4b, 0x48, 0x0c, 0xbb, 0xb7, 0xa4, 0xc4, 0x31, 0xc4, 0xa1, 0x66, 0x3b, 0x72, 0x71, 0x21,
0x6c, 0x14, 0x92, 0x80, 0x2a, 0xc3, 0x70, 0x99, 0x94, 0x24, 0x16, 0x19, 0x88, 0x11, 0x49, 0x6c,
0xe0, 0x28, 0x30, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x80, 0x74, 0x7a, 0x62, 0x8f, 0x01, 0x00,
0x00,
}

21
lnrpc/rpc.proto Normal file

@ -0,0 +1,21 @@
syntax = "proto3";
package lnrpc;
service Lightning {
rpc SendMany(SendManyRequest) returns (SendManyResponse);
rpc NewAddress(NewAddressRequest) returns (NewAddressResponse);
}
message SendManyRequest {
map<string, int64> AddrToAmount = 1;
}
message SendManyResponse {
string txid = 1;
}
message NewAddressRequest {}
message NewAddressResponse {
string address = 1;
}

@ -9,8 +9,8 @@ import (
"google.golang.org/grpc"
"google.golang.org/grpc/grpclog"
"li.lan/labs/plasma/lnrpc"
"li.lan/labs/plasma/lnwallet"
"li.lan/labs/plasma/rpcprotos"
)
//lightning == terrestrial plasma

@ -6,8 +6,8 @@ import (
"github.com/btcsuite/btcutil"
"github.com/btcsuite/btcwallet/waddrmgr"
"golang.org/x/net/context"
"li.lan/labs/plasma/lnrpc"
"li.lan/labs/plasma/lnwallet"
"li.lan/labs/plasma/rpcprotos"
)
var (