Skip to content

Commit

Permalink
NIP-42 Authorization challenge
Browse files Browse the repository at this point in the history
  • Loading branch information
unclebob committed Sep 8, 2023
1 parent 44ae745 commit 834d1d4
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 2 deletions.
22 changes: 20 additions & 2 deletions src/more_speech/nostr/event_dispatcher.clj
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
[more-speech.nostr.events :as events]
[more-speech.nostr.relays :as relays]
[more-speech.nostr.util :refer :all :as util]
[more-speech.nostr.zaps :as zaps])
[more-speech.nostr.zaps :as zaps]
[more-speech.relay :as relay])
(:import (ecdhJava SECP256K1)))

(defprotocol event-handler
Expand Down Expand Up @@ -219,9 +220,26 @@
(update-mem [:event-counter :total] inc)
(update-mem [:event-counter relay] #(inc (if (nil? %) 0 %)))))

;nip-42 authorization challenge.
(defn handle-authorization-challenge [envelope url]
(let [response-event (event-composers/body->event
{:kind 22242
:tags [["relay" url]
["challenge" (second envelope)]]
:content ""})
relay (relays/get-relay-for url)]
(relay/send relay response-event)))

(defn handle-unknown-notice-type [_envelope _url]
)

(defn handle-notification [envelope url]
(set-mem [:relay-notice url] (with-out-str (clojure.pprint/pprint envelope)))
(log-pr 2 'NOTICE url envelope))
(log-pr 2 'NOTICE url envelope)
(let [notice-type (first envelope)]
(condp = notice-type
"AUTH" (handle-authorization-challenge envelope url)
(handle-unknown-notice-type envelope url))))

(defn inc-if-nil [n]
(if (nil? n) 1 (inc n)))
Expand Down
3 changes: 3 additions & 0 deletions src/more_speech/nostr/relays.clj
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@
(recur (rest urls)
(assoc relays-to-write url {:read read :write write})))))))

(defn get-relay-for [url]
(:connection (get (get-mem :relays) url)))

(defn validate-relay-url [url]
(if (empty? url)
nil
Expand Down

0 comments on commit 834d1d4

Please sign in to comment.