From 8fd6436ac825080e0dbfe704f0715cf048e0627e Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Sat, 18 Nov 2023 10:35:08 -0300 Subject: [PATCH] rework nip11 support to be more transparent. --- go.mod | 4 ++-- go.sum | 4 ++-- handlers.go | 27 +-------------------------- relay.go | 16 +++++++++------- 4 files changed, 14 insertions(+), 37 deletions(-) diff --git a/go.mod b/go.mod index c0d41da..bb90aaf 100644 --- a/go.mod +++ b/go.mod @@ -5,8 +5,7 @@ go 1.21.0 require ( github.com/fasthttp/websocket v1.5.3 github.com/fiatjaf/eventstore v0.1.0 - github.com/gobwas/ws v1.2.0 - github.com/nbd-wtf/go-nostr v0.25.1 + github.com/nbd-wtf/go-nostr v0.25.7 github.com/puzpuzpuz/xsync/v2 v2.5.1 github.com/rs/cors v1.7.0 golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53 @@ -30,6 +29,7 @@ require ( github.com/fatih/structs v1.1.0 // indirect github.com/gobwas/httphead v0.1.0 // indirect github.com/gobwas/pool v0.2.1 // indirect + github.com/gobwas/ws v1.2.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/glog v1.0.0 // indirect github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 // indirect diff --git a/go.sum b/go.sum index e388a34..3e7d074 100644 --- a/go.sum +++ b/go.sum @@ -90,8 +90,8 @@ github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJ github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6YIM= github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= -github.com/nbd-wtf/go-nostr v0.25.1 h1:YTLTDUgngfzd3qQ0fWmQmq20flwnGtHH0g0Q8S3HlW4= -github.com/nbd-wtf/go-nostr v0.25.1/go.mod h1:bkffJI+x914sPQWum9ZRUn66D7NpDnAoWo1yICvj3/0= +github.com/nbd-wtf/go-nostr v0.25.7 h1:DcGOSgKVr/L6w62tRtKeV2t46sRyFcq9pWcyIFkh0eM= +github.com/nbd-wtf/go-nostr v0.25.7/go.mod h1:bkffJI+x914sPQWum9ZRUn66D7NpDnAoWo1yICvj3/0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= diff --git a/handlers.go b/handlers.go index b890fbd..e63a5af 100644 --- a/handlers.go +++ b/handlers.go @@ -13,7 +13,6 @@ import ( "github.com/fasthttp/websocket" "github.com/nbd-wtf/go-nostr" - "github.com/nbd-wtf/go-nostr/nip11" "github.com/nbd-wtf/go-nostr/nip42" ) @@ -252,29 +251,5 @@ func (rl *Relay) HandleWebsocket(w http.ResponseWriter, r *http.Request) { func (rl *Relay) HandleNIP11(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/nostr+json") - - supportedNIPs := []int{} - if rl.ServiceURL != "" { - supportedNIPs = append(supportedNIPs, 42) - } - if rl.CountEvents != nil { - supportedNIPs = append(supportedNIPs, 45) - } - - info := nip11.RelayInformationDocument{ - Name: rl.Name, - Description: rl.Description, - PubKey: rl.PubKey, - Contact: rl.Contact, - Icon: rl.IconURL, - SupportedNIPs: supportedNIPs, - Software: "https://github.com/fiatjaf/khatru", - Version: "n/a", - } - - for _, edit := range rl.EditInformation { - edit(r.Context(), &info) - } - - json.NewEncoder(w).Encode(info) + json.NewEncoder(w).Encode(rl.Info) } diff --git a/relay.go b/relay.go index 76e44f2..f141a1c 100644 --- a/relay.go +++ b/relay.go @@ -17,6 +17,11 @@ func NewRelay() *Relay { return &Relay{ Log: log.New(os.Stderr, "[khatru-relay] ", log.LstdFlags), + Info: &nip11.RelayInformationDocument{ + Software: "https://github.com/fiatjaf/khatru", + Version: "n/a", + }, + upgrader: websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, @@ -34,12 +39,7 @@ func NewRelay() *Relay { } type Relay struct { - Name string - Description string - PubKey string - Contact string - ServiceURL string // required for nip-42 - IconURL string + ServiceURL string // required for nip-42 RejectEvent []func(ctx context.Context, event *nostr.Event) (reject bool, msg string) RejectFilter []func(ctx context.Context, filter nostr.Filter) (reject bool, msg string) @@ -52,11 +52,13 @@ type Relay struct { DeleteEvent []func(ctx context.Context, event *nostr.Event) error QueryEvents []func(ctx context.Context, filter nostr.Filter) (chan *nostr.Event, error) CountEvents []func(ctx context.Context, filter nostr.Filter) (int64, error) - EditInformation []func(ctx context.Context, info *nip11.RelayInformationDocument) OnAuth []func(ctx context.Context, pubkey string) OnConnect []func(ctx context.Context) OnEventSaved []func(ctx context.Context, event *nostr.Event) + // editing info will affect + Info *nip11.RelayInformationDocument + // Default logger, as set by NewServer, is a stdlib logger prefixed with "[khatru-relay] ", // outputting to stderr. Log *log.Logger