feat: more detailed error messages for rejected event
This commit is contained in:
parent
5339dde64a
commit
7215d37fe9
2 changed files with 19 additions and 12 deletions
|
|
@ -26,8 +26,6 @@ from .models import NostrRelay
|
||||||
from .views import * # noqa
|
from .views import * # noqa
|
||||||
from .views_api import * # noqa
|
from .views_api import * # noqa
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
settings.lnbits_relay_information = {
|
settings.lnbits_relay_information = {
|
||||||
"name": "LNbits Nostr Relay",
|
"name": "LNbits Nostr Relay",
|
||||||
"description": "Multiple relays are supported",
|
"description": "Multiple relays are supported",
|
||||||
|
|
|
||||||
|
|
@ -121,6 +121,10 @@ class NostrClientConnection:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
async def _broadcast_event(self, e: NostrEvent):
|
||||||
|
if self.broadcast_event:
|
||||||
|
await self.broadcast_event(self, e)
|
||||||
|
|
||||||
async def _handle_message(self, data: List) -> List:
|
async def _handle_message(self, data: List) -> List:
|
||||||
if len(data) < 2:
|
if len(data) < 2:
|
||||||
return []
|
return []
|
||||||
|
|
@ -140,31 +144,36 @@ class NostrClientConnection:
|
||||||
|
|
||||||
async def _handle_event(self, e: NostrEvent):
|
async def _handle_event(self, e: NostrEvent):
|
||||||
resp_nip20: List[Any] = ["OK", e.id]
|
resp_nip20: List[Any] = ["OK", e.id]
|
||||||
try:
|
|
||||||
e.check_signature()
|
|
||||||
|
|
||||||
if not self.client_config.is_author_allowed(e.pubkey):
|
if not self.client_config.is_author_allowed(e.pubkey):
|
||||||
raise ValueError(f"Public key '{e.pubkey}' is not allowed in relay '{self.relay_id}'!")
|
resp_nip20 += [False, f"Public key '{e.pubkey}' is not allowed in relay '{self.relay_id}'!"]
|
||||||
|
await self.websocket.send_text(json.dumps(resp_nip20))
|
||||||
|
return None
|
||||||
|
|
||||||
|
try:
|
||||||
|
e.check_signature()
|
||||||
|
except ValueError as ex:
|
||||||
|
resp_nip20 += [False, "invalid: wrong event `id` or `sig`"]
|
||||||
|
await self.websocket.send_text(json.dumps(resp_nip20))
|
||||||
|
return None
|
||||||
|
|
||||||
|
try:
|
||||||
if e.is_replaceable_event():
|
if e.is_replaceable_event():
|
||||||
await delete_events(
|
await delete_events(
|
||||||
self.relay_id, NostrFilter(kinds=[e.kind], authors=[e.pubkey])
|
self.relay_id, NostrFilter(kinds=[e.kind], authors=[e.pubkey])
|
||||||
)
|
)
|
||||||
await create_event(self.relay_id, e)
|
await create_event(self.relay_id, e)
|
||||||
if self.broadcast_event:
|
await self._broadcast_event(e)
|
||||||
await self.broadcast_event(self, e)
|
|
||||||
if e.is_delete_event():
|
if e.is_delete_event():
|
||||||
await self._handle_delete_event(e)
|
await self._handle_delete_event(e)
|
||||||
resp_nip20 += [True, ""]
|
resp_nip20 += [True, ""]
|
||||||
except ValueError as ex:
|
|
||||||
#todo: handle the other Value Errors
|
|
||||||
logger.debug(ex)
|
|
||||||
resp_nip20 += [False, "invalid: wrong event `id` or `sig`"]
|
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
logger.debug(ex)
|
logger.debug(ex)
|
||||||
event = await get_event(self.relay_id, e.id)
|
event = await get_event(self.relay_id, e.id)
|
||||||
# todo: handle NIP20 in detail
|
# todo: handle NIP20 in detail
|
||||||
resp_nip20 += [event != None, f"error: failed to create event"]
|
message = "error: failed to create event"
|
||||||
|
resp_nip20 += [event != None, message]
|
||||||
|
|
||||||
await self.websocket.send_text(json.dumps(resp_nip20))
|
await self.websocket.send_text(json.dumps(resp_nip20))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue