Skip to content

Commit

Permalink
Merge pull request ElementsProject#131 from nepet/improve-api
Browse files Browse the repository at this point in the history
Api improvements
  • Loading branch information
wtogami committed Oct 6, 2022
2 parents 5553411 + 86628e4 commit c99c266
Show file tree
Hide file tree
Showing 33 changed files with 2,171 additions and 1,479 deletions.
1 change: 1 addition & 0 deletions .ci/docker/config/bitcoin.conf
Expand Up @@ -2,6 +2,7 @@ regtest=1
testnet=0
dnsseed=0
upnp=0
fallbackfee=0.00001

[regtest]
port=19000
Expand Down
1 change: 0 additions & 1 deletion clightning/clightning.go
Expand Up @@ -34,7 +34,6 @@ var methods = []peerswaprpcMethod{
&ListPeers{},
&LiquidSendToAddress{},
&GetSwap{},
&ResendLastMessage{},
&ListActiveSwaps{},
&AllowSwapRequests{},
&AddPeer{},
Expand Down
88 changes: 23 additions & 65 deletions clightning/clightning_commands.go
Expand Up @@ -12,6 +12,7 @@ import (
"time"

"github.com/elementsproject/peerswap/log"
"github.com/elementsproject/peerswap/peerswaprpc"

"github.com/elementsproject/glightning/glightning"
"github.com/elementsproject/glightning/jrpc2"
Expand Down Expand Up @@ -235,9 +236,8 @@ func (l *SwapOut) Call() (jrpc2.Result, error) {

}
if swapOut.Current == swap.State_SwapOutSender_AwaitTxConfirmation {
return swapOut.Data.ToPrettyPrint(), nil
return peerswaprpc.PrettyprintFromServiceSwap(swapOut), nil
}

}
}
}
Expand Down Expand Up @@ -354,9 +354,8 @@ func (l *SwapIn) Call() (jrpc2.Result, error) {

}
if swapIn.Current == swap.State_SwapInSender_SendTxBroadcastedMessage {
return swapIn.Data.ToPrettyPrint(), nil
return peerswaprpc.PrettyprintFromServiceSwap(swapIn), nil
}

}
}
}
Expand Down Expand Up @@ -389,14 +388,11 @@ func (l *ListSwaps) Call() (jrpc2.Result, error) {
return false
})
if !l.DetailedPrint {
var pswasp []*swap.PrettyPrintSwapData
var pretty []*peerswaprpc.PrettyPrintSwap
for _, v := range swaps {
if v.Data == nil {
continue
}
pswasp = append(pswasp, v.Data.ToPrettyPrint())
pretty = append(pretty, peerswaprpc.PrettyprintFromServiceSwap(v))
}
return pswasp, nil
return &peerswaprpc.ListSwapsResponse{Swaps: pretty}, nil
}
return swaps, nil
}
Expand Down Expand Up @@ -576,46 +572,6 @@ func (l *ListPeers) Call() (jrpc2.Result, error) {
return peerSwappers, nil
}

type ResendLastMessage struct {
SwapId string `json:"swap_id"`
cl *ClightningClient
}

func (s *ResendLastMessage) Description() string {
return "resends last swap message"
}

func (s *ResendLastMessage) LongDescription() string {
return "'"
}

func (g *ResendLastMessage) Name() string {
return "peerswap-resendmsg"
}

func (g *ResendLastMessage) New() interface{} {
return &ResendLastMessage{
cl: g.cl,
SwapId: g.SwapId,
}
}
func (g *ResendLastMessage) Get(client *ClightningClient) jrpc2.ServerMethod {
return &ResendLastMessage{
cl: client,
}
}

func (g *ResendLastMessage) Call() (jrpc2.Result, error) {
if g.SwapId == "" {
return nil, errors.New("swap_id required")
}
err := g.cl.swaps.ResendLastMessage(g.SwapId)
if err != nil {
return nil, err
}
return nil, nil
}

type GetSwap struct {
SwapId string `json:"swap_id"`
cl *ClightningClient
Expand All @@ -640,7 +596,7 @@ func (g *GetSwap) Call() (jrpc2.Result, error) {
if err != nil {
return nil, err
}
return swap, nil
return MSerializedSwapStateMachine(swap), nil
}

func (g *GetSwap) Get(client *ClightningClient) jrpc2.ServerMethod {
Expand All @@ -662,6 +618,9 @@ type PolicyReloader interface {
RemoveFromAllowlist(pubkey string) error
AddToSuspiciousPeerList(pubkey string) error
RemoveFromSuspiciousPeerList(pubkey string) error
NewSwapsAllowed() bool
DisableSwaps() error
EnableSwaps() error
ReloadFile() error
Get() policy.Policy
}
Expand Down Expand Up @@ -748,7 +707,12 @@ func (g *ListActiveSwaps) Call() (jrpc2.Result, error) {
if err != nil {
return nil, err
}
return swaps, nil

var pretty []*peerswaprpc.PrettyPrintSwap
for _, v := range swaps {
pretty = append(pretty, peerswaprpc.PrettyprintFromServiceSwap(v))
}
return &peerswaprpc.ListSwapsResponse{Swaps: pretty}, nil
}

func (g *ListActiveSwaps) Get(client *ClightningClient) jrpc2.ServerMethod {
Expand Down Expand Up @@ -783,23 +747,17 @@ func (g *AllowSwapRequests) New() interface{} {
}

func (g *AllowSwapRequests) Call() (jrpc2.Result, error) {
if g.AllowSwapRequestsString == "" {
return nil, fmt.Errorf("missing argument:1 to allow, 0 to disallow")
}
if g.AllowSwapRequestsString == "1" || strings.ToLower(g.AllowSwapRequestsString) == "true" {
g.cl.swaps.SetAllowSwapRequests(true)
g.cl.policy.EnableSwaps()
} else if g.AllowSwapRequestsString == "0" || strings.ToLower(g.AllowSwapRequestsString) == "false" {
g.cl.swaps.SetAllowSwapRequests(false)
}

allowSwap := g.cl.swaps.GetAllowSwapRequests()

response := fmt.Sprintf("New incoming PeerSwap requests are currently ")

if allowSwap {
response += "enabled."
} else {
response += "disabled. Existing swaps are allowed to complete. See `peerswap-listactiveswaps`"
g.cl.policy.DisableSwaps()
}

return response, nil
pol := g.cl.policy.Get()
return peerswaprpc.GetPolicyMessage(pol), nil
}

func boolToString(val bool) string {
Expand Down
19 changes: 19 additions & 0 deletions clightning/serializing.go
@@ -0,0 +1,19 @@
package clightning

import "github.com/elementsproject/peerswap/swap"

// SerializedSwapStateMachine is the serialized representation of the internal
// state machine with all these massive (and unnecessary) amounts of data.
type SerializedSwapStateMachine struct {
*swap.SwapStateMachine
Type string `json:"type"`
Role string `json:"role"`
}

func MSerializedSwapStateMachine(swapStateMachine *swap.SwapStateMachine) *SerializedSwapStateMachine {
return &SerializedSwapStateMachine{
SwapStateMachine: swapStateMachine,
Type: swapStateMachine.Type.String(),
Role: swapStateMachine.Role.String(),
}
}
28 changes: 20 additions & 8 deletions cmd/peerswaplnd/peerswapd/main.go
Expand Up @@ -5,7 +5,7 @@ import (
"errors"
"fmt"
"io"
log2 "log"
core_log "log"
"net"
"net/http"
"os"
Expand Down Expand Up @@ -42,6 +42,7 @@ import (
"go.etcd.io/bbolt"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"google.golang.org/protobuf/encoding/protojson"
)

const (
Expand All @@ -53,7 +54,7 @@ var GitCommit string
func main() {
err := run()
if err != nil {
log2.Fatal(err)
core_log.Fatal(err)
}
}

Expand Down Expand Up @@ -372,13 +373,23 @@ func run() error {
go func() {
err := grpcSrv.Serve(lis)
if err != nil {
log2.Fatal(err)
core_log.Fatal(err)
}
}()
defer grpcSrv.Stop()
log.Infof("peerswapd grpc listening on %v", cfg.Host)
if cfg.RestHost != "" {
mux := runtime.NewServeMux()
mux := runtime.NewServeMux(
runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.JSONPb{
MarshalOptions: protojson.MarshalOptions{
UseProtoNames: true,
EmitUnpopulated: true,
},
UnmarshalOptions: protojson.UnmarshalOptions{
DiscardUnknown: true,
},
}),
)
opts := []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())}
err := peerswaprpc.RegisterPeerSwapHandlerFromEndpoint(ctx, mux, cfg.Host, opts)
if err != nil {
Expand All @@ -387,7 +398,7 @@ func run() error {
go func() {
err := http.ListenAndServe(cfg.RestHost, mux)
if err != nil {
log2.Fatal(err)
core_log.Fatal(err)
}
}()

Expand Down Expand Up @@ -520,18 +531,19 @@ func NewLndLogger(cfg *peerswaplnd.PeerSwapConfig) (*LndLogger, func() error, er
return nil, nil, err
}
w := io.MultiWriter(os.Stdout, logFile)
log2.SetOutput(w)
core_log.SetFlags(core_log.LstdFlags | core_log.LUTC)
core_log.SetOutput(w)

return &LndLogger{loglevel: cfg.LogLevel}, logFile.Close, nil
}

func (l *LndLogger) Infof(format string, v ...interface{}) {
log2.Printf("[INFO] "+format, v...)
core_log.Printf("[INFO] "+format, v...)
}

func (l *LndLogger) Debugf(format string, v ...interface{}) {
if l.loglevel == peerswaplnd.LOGLEVEL_DEBUG {
log2.Printf("[DEBUG] "+format, v...)
core_log.Printf("[DEBUG] "+format, v...)
}
}

Expand Down

0 comments on commit c99c266

Please sign in to comment.