Skip to content
This repository has been archived by the owner on Nov 17, 2023. It is now read-only.

Bump version to 0.5.6-beta #408

Merged
merged 1 commit into from
Mar 20, 2022
Merged

Conversation

michaelWuensch
Copy link
Contributor

No description provided.

@michaelWuensch michaelWuensch merged commit acffc0e into LN-Zap:master Mar 20, 2022
@michaelWuensch michaelWuensch deleted the BumpVersion branch March 20, 2022 10:31
@Bladez1753
Copy link

michaelWuensch:BumpVersionpackage main

import (
b64 "encoding/base64"
"encoding/pem"
"fmt"
"io/ioutil"
"net"
"net/url"
"os"
"strings"

"github.com/Baozisoftware/qrcode-terminal-go"
"github.com/glendc/go-external-ip"
"github.com/skip2/go-qrcode"

)

func getLocalIP() string {
addrs, err := net.InterfaceAddrs()
if err != nil {
return ""
}
for _, address := range addrs {
if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
if ipnet.IP.To4() != nil {
return ipnet.IP.String()
}
}
}
return ""
}

func getPublicIP() string {
consensus := externalip.DefaultConsensus(nil, nil)
ip, err := consensus.ExternalIP()
if err != nil {
fmt.Println(err)
os.Exit(1)
}

return ip.String()

}

func main() {
loadedConfig, err := loadConfig()
if err != nil {
fmt.Println(err)
return
}

displayLink(loadedConfig)

}

func displayLink(loadedConfig *config) {
var err error

// host
ipString := ""
if loadedConfig.LndConnect.Host != "" {
	ipString = loadedConfig.LndConnect.Host
} else if loadedConfig.LndConnect.LocalIp {
	ipString = getLocalIP()
} else if loadedConfig.LndConnect.Localhost {
	ipString = "127.0.0.1"
} else {
	ipString = getPublicIP()
}

ipString = net.JoinHostPort(ipString, fmt.Sprint(loadedConfig.LndConnect.Port))

u := url.URL{Scheme: "lndconnect", Host: ipString}
q := u.Query()

// cert
if !loadedConfig.LndConnect.NoCert {
	certBytes, err := ioutil.ReadFile(loadedConfig.TLSCertPath)
	if err != nil {
		fmt.Println(err)
		return
	}

	block, _ := pem.Decode(certBytes)
	if block == nil || block.Type != "CERTIFICATE" {
		fmt.Println("failed to decode PEM block containing certificate")
	}

	certificate := b64.RawURLEncoding.EncodeToString([]byte(block.Bytes))

	q.Add("cert", certificate)
}

// macaroon
var macBytes []byte
if loadedConfig.LndConnect.Invoice {
	macBytes, err = ioutil.ReadFile(loadedConfig.InvoiceMacPath)
} else if loadedConfig.LndConnect.Readonly {
	macBytes, err = ioutil.ReadFile(loadedConfig.ReadMacPath)
} else {
	macBytes, err = ioutil.ReadFile(loadedConfig.AdminMacPath)
}

if err != nil {
	fmt.Println(err)
	return
}

macaroonB64 := b64.RawURLEncoding.EncodeToString([]byte(macBytes))

q.Add("macaroon", macaroonB64)

// custom query
for _, s := range loadedConfig.LndConnect.Query {
	queryParts := strings.Split(s, "=")

	if len(queryParts) != 2 {
		fmt.Println("Invalid Query Argument:", s)
		return
	}

	q.Add(queryParts[0], queryParts[1])
}

u.RawQuery = q.Encode()

// generate link / QR Code
if loadedConfig.LndConnect.Url {
	fmt.Println(u.String())
} else if loadedConfig.LndConnect.Image {
	qrcode.WriteFile(u.String(), qrcode.Medium, 512, "lndconnect-qr.png")
	fmt.Println("Wrote QR Code to file \"lndconnect-qr.png\"")
} else {
	obj := qrcodeTerminal.New()
	obj.Get(u.String()).Print()
	fmt.Println("\n⚠️  Press \"cmd + -\" a few times to see the full QR Code!\nIf that doesn't work run \"lndconnect -j\" to get a code you can copy paste into the app.")
}

}github.com/Baozisoftware/qrcode-terminal-go

@Bladez1753
Copy link

@michael's

@Bladez1753
Copy link

#408 (comment)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants