mirror of
https://github.com/callebtc/electronwall.git
synced 2026-02-23 08:04:54 +01:00
amboss
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"github.com/callebtc/electronwall/api"
|
||||
"github.com/callebtc/electronwall/rules"
|
||||
"github.com/callebtc/electronwall/types"
|
||||
"github.com/lightningnetwork/lnd/lnrpc"
|
||||
@@ -23,11 +24,19 @@ func (app *App) getChannelAcceptEvent(ctx context.Context, req lnrpc.ChannelAcce
|
||||
if err != nil {
|
||||
log.Errorf(err.Error())
|
||||
}
|
||||
|
||||
noeInfo, err := api.GetApiNodeinfo(string(req.NodePubkey))
|
||||
if err != nil {
|
||||
log.Errorf(err.Error())
|
||||
}
|
||||
|
||||
return types.ChannelAcceptEvent{
|
||||
PubkeyFrom: hex.EncodeToString(req.NodePubkey),
|
||||
AliasFrom: alias,
|
||||
NodeInfo: info,
|
||||
Event: &req,
|
||||
OneMl: noeInfo.OneMl,
|
||||
Amboss: noeInfo.Amboss,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -172,9 +181,9 @@ func (app *App) channelAcceptDecision(req lnrpc.ChannelAcceptRequest) (bool, err
|
||||
}
|
||||
|
||||
// parse and make decision
|
||||
log.Infof(hex.EncodeToString(req.NodePubkey))
|
||||
log.Infof("TRYING %s", string(req.NodePubkey))
|
||||
for _, pubkey := range listToParse {
|
||||
if hex.EncodeToString(req.NodePubkey) == pubkey || pubkey == "*" {
|
||||
if string(req.NodePubkey) == pubkey || pubkey == "*" {
|
||||
accept = !accept
|
||||
break
|
||||
}
|
||||
|
||||
4
go.mod
4
go.mod
@@ -6,8 +6,12 @@ require (
|
||||
github.com/dop251/goja v0.0.0-20220815083517-0c74f9139fd6
|
||||
github.com/jinzhu/configor v1.2.1
|
||||
github.com/lightningnetwork/lnd v0.14.3-beta
|
||||
github.com/machinebox/graphql v0.2.2
|
||||
github.com/matryer/is v1.4.0 // indirect
|
||||
github.com/sirupsen/logrus v1.8.1
|
||||
github.com/stretchr/testify v1.7.0
|
||||
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 // indirect
|
||||
golang.org/x/tools v0.1.10 // indirect
|
||||
google.golang.org/grpc v1.46.2
|
||||
gopkg.in/macaroon.v2 v2.1.0
|
||||
)
|
||||
|
||||
16
go.sum
16
go.sum
@@ -527,9 +527,13 @@ github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQ
|
||||
github.com/ltcsuite/ltcd v0.0.0-20190101042124-f37f8bf35796 h1:sjOGyegMIhvgfq5oaue6Td+hxZuf3tDC8lAPrFldqFw=
|
||||
github.com/ltcsuite/ltcd v0.0.0-20190101042124-f37f8bf35796/go.mod h1:3p7ZTf9V1sNPI5H8P3NkTFF4LuwMdPl2DodF60qAKqY=
|
||||
github.com/ltcsuite/ltcutil v0.0.0-20181217130922-17f3b04680b6/go.mod h1:8Vg/LTOO0KYa/vlHWJ6XZAevPQThGH5sufO0Hrou/lA=
|
||||
github.com/machinebox/graphql v0.2.2 h1:dWKpJligYKhYKO5A2gvNhkJdQMNZeChZYyBbrZkBZfo=
|
||||
github.com/machinebox/graphql v0.2.2/go.mod h1:F+kbVMHuwrQ5tYgU9JXlnskM8nOaFxCAEolaQybkjWA=
|
||||
github.com/magiconair/properties v1.7.6/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE=
|
||||
github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU=
|
||||
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
|
||||
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
|
||||
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
@@ -721,6 +725,7 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
|
||||
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
|
||||
go.etcd.io/bbolt v1.3.5-0.20200615073812-232d8fc87f50/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ=
|
||||
@@ -842,6 +847,7 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB
|
||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
|
||||
golang.org/x/net v0.0.0-20170915142106-8351a756f30f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
@@ -887,8 +893,9 @@ golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwY
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20210913180222-943fd674d43e h1:+b/22bPvDYt4NPDcy4xAGCmON713ONAWFeY3Z7I3tR8=
|
||||
golang.org/x/net v0.0.0-20210913180222-943fd674d43e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f h1:OfiFi4JbukWwe3lzw+xunroH1mnC1e2Gy5cxNJApiSY=
|
||||
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
@@ -968,8 +975,10 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc
|
||||
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210915083310-ed5796bab164 h1:7ZDGnxgHAMw7thfC5bEos0RDAccZKxioiWBhfIe+tvw=
|
||||
golang.org/x/sys v0.0.0-20210915083310-ed5796bab164/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 h1:OH54vjqzRWmbJ62fjuhxy7AxFFgoHN0/DPc/UrL8cAs=
|
||||
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
@@ -1052,8 +1061,9 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc
|
||||
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||
golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||
golang.org/x/tools v0.1.7 h1:6j8CgantCy3yc8JGBqkDLMKWqZ0RDU2g1HVgacojGWQ=
|
||||
golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
|
||||
golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20=
|
||||
golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
|
||||
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
|
||||
30
main_test.go
30
main_test.go
@@ -453,14 +453,14 @@ func TestChannelAllowlist_CorrectKey(t *testing.T) {
|
||||
app := NewApp(ctx, client)
|
||||
|
||||
Configuration.ChannelMode = "allowlist"
|
||||
Configuration.ChannelAllowlist = []string{"6d792d7075626b65792d69732d766572792d6c6f6e672d666f722d7472696d6d696e672d7075626b6579"}
|
||||
Configuration.ChannelAllowlist = []string{"03006fcf3312dae8d068ea297f58e2bd00ec1ffe214b793eda46966b6294a53ce6"}
|
||||
|
||||
app.DispatchChannelAcceptor(ctx)
|
||||
|
||||
// correct key: should be allowed
|
||||
|
||||
client.channelAcceptorRequests <- &lnrpc.ChannelAcceptRequest{
|
||||
NodePubkey: []byte("my-pubkey-is-very-long-for-trimming-pubkey"),
|
||||
NodePubkey: []byte("03006fcf3312dae8d068ea297f58e2bd00ec1ffe214b793eda46966b6294a53ce6"),
|
||||
FundingAmt: 1337000,
|
||||
PendingChanId: []byte("759495353533530113"),
|
||||
}
|
||||
@@ -468,15 +468,27 @@ func TestChannelAllowlist_CorrectKey(t *testing.T) {
|
||||
resp := <-client.channelAcceptorResponses
|
||||
require.Equal(t, resp.Accept, true)
|
||||
|
||||
}
|
||||
func TestChannelAllowlist_WrongKey(t *testing.T) {
|
||||
client := newLndclientMock()
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
app := NewApp(ctx, client)
|
||||
|
||||
Configuration.ChannelMode = "allowlist"
|
||||
Configuration.ChannelAllowlist = []string{"03006fcf3312dae8d068ea297f58e2bd00ec1ffe214b793eda46966b6294a53ce6"}
|
||||
|
||||
app.DispatchChannelAcceptor(ctx)
|
||||
// wrong key: should be denied
|
||||
|
||||
client.channelAcceptorRequests <- &lnrpc.ChannelAcceptRequest{
|
||||
NodePubkey: []byte("WRONG PUBKEY"),
|
||||
NodePubkey: []byte("WRONG-KEY"),
|
||||
FundingAmt: 1337000,
|
||||
PendingChanId: []byte("759495353533530113"),
|
||||
}
|
||||
|
||||
resp = <-client.channelAcceptorResponses
|
||||
resp := <-client.channelAcceptorResponses
|
||||
require.Equal(t, resp.Accept, false)
|
||||
}
|
||||
func TestChannelAllowlist_Wildcard(t *testing.T) {
|
||||
@@ -493,7 +505,7 @@ func TestChannelAllowlist_Wildcard(t *testing.T) {
|
||||
Configuration.ChannelAllowlist = []string{"*"}
|
||||
|
||||
client.channelAcceptorRequests <- &lnrpc.ChannelAcceptRequest{
|
||||
NodePubkey: []byte("WRONG PUBKEY"),
|
||||
NodePubkey: []byte("03006fcf3312dae8d068ea297f58e2bd00ec1ffe214b793eda46966b6294a53ce6"),
|
||||
FundingAmt: 1337000,
|
||||
PendingChanId: []byte("759495353533530113"),
|
||||
}
|
||||
@@ -510,14 +522,14 @@ func TestChannelDenylist_Match(t *testing.T) {
|
||||
app := NewApp(ctx, client)
|
||||
|
||||
Configuration.ChannelMode = "denylist"
|
||||
Configuration.ChannelDenylist = []string{"6d792d7075626b65792d69732d766572792d6c6f6e672d666f722d7472696d6d696e672d7075626b6579"}
|
||||
Configuration.ChannelDenylist = []string{"03006fcf3312dae8d068ea297f58e2bd00ec1ffe214b793eda46966b6294a53ce6"}
|
||||
|
||||
app.DispatchChannelAcceptor(ctx)
|
||||
|
||||
// should be denied
|
||||
|
||||
client.channelAcceptorRequests <- &lnrpc.ChannelAcceptRequest{
|
||||
NodePubkey: []byte("my-pubkey-is-very-long-for-trimming-pubkey"),
|
||||
NodePubkey: []byte("03006fcf3312dae8d068ea297f58e2bd00ec1ffe214b793eda46966b6294a53ce6"),
|
||||
FundingAmt: 1337000,
|
||||
PendingChanId: []byte("759495353533530113"),
|
||||
}
|
||||
@@ -534,13 +546,13 @@ func TestChannelAllowlist_Match(t *testing.T) {
|
||||
app := NewApp(ctx, client)
|
||||
|
||||
Configuration.ChannelMode = "allowlist"
|
||||
Configuration.ChannelAllowlist = []string{"6d792d7075626b65792d69732d766572792d6c6f6e672d666f722d7472696d6d696e672d7075626b6579"}
|
||||
Configuration.ChannelAllowlist = []string{"03006fcf3312dae8d068ea297f58e2bd00ec1ffe214b793eda46966b6294a53ce6"}
|
||||
|
||||
app.DispatchChannelAcceptor(ctx)
|
||||
|
||||
// should be allowed
|
||||
client.channelAcceptorRequests <- &lnrpc.ChannelAcceptRequest{
|
||||
NodePubkey: []byte("my-pubkey-is-very-long-for-trimming-pubkey"),
|
||||
NodePubkey: []byte("03006fcf3312dae8d068ea297f58e2bd00ec1ffe214b793eda46966b6294a53ce6"),
|
||||
FundingAmt: 1337000,
|
||||
PendingChanId: []byte("759495353533530113"),
|
||||
}
|
||||
|
||||
@@ -1,2 +1,12 @@
|
||||
ChannelAccept.Event.FundingAmt >= 750000;
|
||||
|
||||
if (
|
||||
ChannelAccept.Event.FundingAmt >= 750000 &&
|
||||
ChannelAccept.OneMl.LastUpdate > 1661227900 &&
|
||||
ChannelAccept.OneMl.Noderank.Availability > 100 &&
|
||||
ChannelAccept.Amboss.Socials.Info.Email
|
||||
// (
|
||||
// ChannelAccept.Amboss.Socials.Info.Email.length > 0 ||
|
||||
// ChannelAccept.Amboss.Socials.Info.Twitter.length >0 ||
|
||||
// ChannelAccept.Amboss.Socials.Info.Telegram.length >0
|
||||
// )
|
||||
// ChannelAccept.Amboss.Amboss.IsPrime == false
|
||||
) { true } else { false }
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
HtlcForward.Event.OutgoingAmountMsat >= 100000
|
||||
if (
|
||||
HtlcForward.Event.OutgoingAmountMsat >= 100000
|
||||
) { true } else { false }
|
||||
|
||||
|
||||
@@ -2,11 +2,11 @@ package rules
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
"github.com/callebtc/electronwall/types"
|
||||
"github.com/dop251/goja"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func Apply(s interface{}, decision_chan chan bool) (accept bool, err error) {
|
||||
@@ -41,7 +41,7 @@ func Apply(s interface{}, decision_chan chan bool) (accept bool, err error) {
|
||||
// execute script
|
||||
v, err := vm.RunString(string(js_script))
|
||||
if err != nil {
|
||||
fmt.Print(err.Error())
|
||||
log.Errorf("JS error: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user