Add nostr nip-05 registration with lnd invoices #1
3 changed files with 23 additions and 21 deletions
13
main.go
13
main.go
|
@ -7,9 +7,21 @@ import (
|
||||||
"git.minhas.io/asara/well-goknown/logger"
|
"git.minhas.io/asara/well-goknown/logger"
|
||||||
"git.minhas.io/asara/well-goknown/matrix"
|
"git.minhas.io/asara/well-goknown/matrix"
|
||||||
"git.minhas.io/asara/well-goknown/nostr"
|
"git.minhas.io/asara/well-goknown/nostr"
|
||||||
|
"git.minhas.io/asara/well-goknown/redis"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
var err error
|
||||||
|
l := logger.Get()
|
||||||
|
// connect to redis
|
||||||
|
redis.NostrRedisConn, err = redis.New("localhost:6379", "", redis.NostrKeyspace)
|
||||||
|
if err != nil {
|
||||||
|
l.Fatal().Msg("unable to connect to redis")
|
||||||
|
}
|
||||||
|
redis.LndRedisConn, err = redis.New("localhost:6379", "", redis.LndKeyspace)
|
||||||
|
if err != nil {
|
||||||
|
l.Fatal().Msg("unable to connect to redis")
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
nostrTest := nostr.NostrRequest{
|
nostrTest := nostr.NostrRequest{
|
||||||
Name: "asara",
|
Name: "asara",
|
||||||
|
@ -19,7 +31,6 @@ func main() {
|
||||||
nostr.AddNostrAddr(nostrTest)
|
nostr.AddNostrAddr(nostrTest)
|
||||||
*/
|
*/
|
||||||
// matrix endpoints
|
// matrix endpoints
|
||||||
l := logger.Get()
|
|
||||||
l.Debug().Msg("enabling matrix server endpoint")
|
l.Debug().Msg("enabling matrix server endpoint")
|
||||||
http.HandleFunc("/.well-known/matrix/server", matrix.MatrixServer)
|
http.HandleFunc("/.well-known/matrix/server", matrix.MatrixServer)
|
||||||
l.Debug().Msg("enabling matrix client endpoint")
|
l.Debug().Msg("enabling matrix client endpoint")
|
||||||
|
|
|
@ -37,12 +37,7 @@ func RequestNostrAddr(w http.ResponseWriter, r *http.Request) {
|
||||||
http.ServeFile(w, r, "html/nostr_form.html")
|
http.ServeFile(w, r, "html/nostr_form.html")
|
||||||
case "POST":
|
case "POST":
|
||||||
r.ParseForm()
|
r.ParseForm()
|
||||||
redisCli, err := redis.New("localhost:6379", "", redis.NostrDb)
|
redisCli := redis.NostrRedisConn
|
||||||
if err != nil {
|
|
||||||
l.Error().Msg("unable to connect to redis")
|
|
||||||
w.WriteHeader(http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// check if the user already exists
|
// check if the user already exists
|
||||||
rKey := getRkey("verified", r.FormValue("Name"), getHostname(r.Host))
|
rKey := getRkey("verified", r.FormValue("Name"), getHostname(r.Host))
|
||||||
exists := redisCli.Client.Exists(ctx, rKey)
|
exists := redisCli.Client.Exists(ctx, rKey)
|
||||||
|
@ -98,19 +93,13 @@ func RequestNostrAddr(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
func GetNostrAddr(w http.ResponseWriter, r *http.Request) {
|
func GetNostrAddr(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := context.TODO()
|
ctx := context.TODO()
|
||||||
l := logger.Get()
|
|
||||||
// get query string for username
|
// get query string for username
|
||||||
r.ParseForm()
|
r.ParseForm()
|
||||||
|
requestedName := r.FormValue("name")
|
||||||
|
|
||||||
// connect to redis
|
// connect to redis
|
||||||
redisCli, err := redis.New("localhost:6379", "", redis.NostrDb)
|
redisCli := redis.NostrRedisConn
|
||||||
if err != nil {
|
|
||||||
l.Error().Msg("unable to connect to redis")
|
|
||||||
w.WriteHeader(http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
requestedName := r.FormValue("name")
|
|
||||||
// search for user@domain
|
// search for user@domain
|
||||||
search := getRkey("verified", requestedName, getHostname(r.Host))
|
search := getRkey("verified", requestedName, getHostname(r.Host))
|
||||||
addr, err := redisCli.Client.Get(ctx, search).Result()
|
addr, err := redisCli.Client.Get(ctx, search).Result()
|
||||||
|
@ -149,10 +138,7 @@ func AddNostrAddr(n NostrRequest) {
|
||||||
}
|
}
|
||||||
jsonUser, _ := json.Marshal(user)
|
jsonUser, _ := json.Marshal(user)
|
||||||
|
|
||||||
redisCli, err := redis.New("localhost:6379", "", redis.NostrDb)
|
redisCli := redis.NostrRedisConn
|
||||||
if err != nil {
|
|
||||||
l.Error().Msg("unable to connect to redis")
|
|
||||||
}
|
|
||||||
nameKey := getRkey("verified", n.Name, n.Hostname)
|
nameKey := getRkey("verified", n.Name, n.Hostname)
|
||||||
enc := b64.StdEncoding.EncodeToString([]byte(jsonUser))
|
enc := b64.StdEncoding.EncodeToString([]byte(jsonUser))
|
||||||
err = redisCli.Client.Set(ctx, nameKey, enc, 0).Err()
|
err = redisCli.Client.Set(ctx, nameKey, enc, 0).Err()
|
||||||
|
|
|
@ -7,14 +7,19 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
NostrDb = iota
|
NostrKeyspace = iota
|
||||||
LndDb = iota
|
LndKeyspace = iota
|
||||||
)
|
)
|
||||||
|
|
||||||
type Redis struct {
|
type Redis struct {
|
||||||
Client *redis.Client
|
Client *redis.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
NostrRedisConn *Redis
|
||||||
|
LndRedisConn *Redis
|
||||||
|
)
|
||||||
|
|
||||||
func New(address string, password string, database int) (*Redis, error) {
|
func New(address string, password string, database int) (*Redis, error) {
|
||||||
client := redis.NewClient(&redis.Options{
|
client := redis.NewClient(&redis.Options{
|
||||||
Addr: address,
|
Addr: address,
|
||||||
|
|
Loading…
Reference in a new issue