add blacklist

This commit is contained in:
callebtc
2022-05-29 13:54:10 +02:00
parent 8f091d302f
commit 15e555604a
3 changed files with 37 additions and 13 deletions

View File

@@ -8,10 +8,12 @@ import (
)
var Configuration = struct {
Mode string `yaml:"mode"`
Host string `yaml:"host"`
MacaroonPath string `yaml:"macaroon_path"`
TLSPath string `yaml:"tls_path"`
Accept []string `yaml:"accept"`
Whitelist []string `yaml:"whitelist"`
Blacklist []string `yaml:"blacklist"`
RejectMessage string `yaml:"reject_message"`
}{}
@@ -28,7 +30,7 @@ func checkConfig() {
panic(fmt.Errorf("no host specified in config.yaml"))
}
if len(Configuration.Accept) == 0 {
if len(Configuration.Whitelist) == 0 {
panic(fmt.Errorf("no accepted pubkeys specified in config.yaml"))
}
@@ -36,4 +38,8 @@ func checkConfig() {
log.Warnf("reject message is too long. Trimming to 500 characters.")
Configuration.RejectMessage = Configuration.RejectMessage[:500]
}
if len(Configuration.Mode) == 0 {
Configuration.Mode = "blacklist"
}
log.Infof("Running in %s mode", Configuration.Mode)
}

View File

@@ -1,7 +1,13 @@
mode: "blacklist"
host: "127.0.0.1:10009"
macaroon_path: "/home/bitcoin/.lnd/data/chain/bitcoin/regtest/admin.macaroon"
macaroon_path: "/home/bitcoin/.lnd/data/chain/bitcoin/mainnet/admin.macaroon"
tls_path: "/home/bitcoin/.lnd/tls.cert"
reject_message: "Contact me at user@email.com to be added to the white list."
accept:
reject_message: "Contact me at user@email.com"
whitelist:
- "03de70865239e99460041e127647b37101b9eb335b3c22de95c944671f0dabc2d0"
- "0307299a290529c5ccb3a5e3bd2eb504daf64cc65c6d65b582c01cbd7e5ede14b6"
blacklist:
- "02853f9c1d15d479b433039885373b681683b84bb73e86dff861bee6697c17c1de"

20
main.go
View File

@@ -70,17 +70,29 @@ func main() {
}
log.Infof("New channel request from %s", hex.EncodeToString(req.NodePubkey))
accept := false
for _, pubkey := range Configuration.Accept {
var accept bool
if Configuration.Mode == "whitelist" {
accept = false
for _, pubkey := range Configuration.Whitelist {
if hex.EncodeToString(req.NodePubkey) == pubkey {
accept = true
break
}
}
} else if Configuration.Mode == "blacklist" {
accept = true
for _, pubkey := range Configuration.Blacklist {
if hex.EncodeToString(req.NodePubkey) == pubkey {
accept = false
break
}
}
}
res := lnrpc.ChannelAcceptResponse{}
if accept {
log.Infof("✅ Accepting channel request from %s", trimPubKey(req.NodePubkey))
log.Infof("✅ [%s mode] Allow channel from %s", Configuration.Mode, trimPubKey(req.NodePubkey))
res = lnrpc.ChannelAcceptResponse{Accept: true,
PendingChanId: req.PendingChanId,
CsvDelay: req.CsvDelay,
@@ -91,7 +103,7 @@ func main() {
}
} else {
log.Infof("❌ Rejecting channel request from %s", trimPubKey(req.NodePubkey))
log.Infof("❌ [%s mode] Deny channel from %s", Configuration.Mode, trimPubKey(req.NodePubkey))
res = lnrpc.ChannelAcceptResponse{Accept: false,
Error: Configuration.RejectMessage}
}