Bugfix, add publish_auth

This commit is contained in:
vic
2023-10-25 22:06:48 -04:00
parent b73f7ba854
commit d8f5335fe2
3 changed files with 22 additions and 7 deletions

View File

@@ -52,7 +52,7 @@ class MessagePool:
return self.eose_notices.get()
def get_auth(self):
return self.auth.get()
return self.auths.get()
def has_events(self):
return self.events.qsize() > 0

View File

@@ -2,7 +2,7 @@ import json
import time
from queue import Queue
from threading import Lock
from websocket import WebSocketApp
from websocket import WebSocketApp, WebSocketConnectionClosedException
from .event import Event
from .filter import Filters
from .message_pool import MessagePool
@@ -90,7 +90,10 @@ class Relay:
if self.connected:
message = self.queue.get()
self.num_sent_events += 1
self.ws.send(message)
try:
self.ws.send(message)
except WebSocketConnectionClosedException as wscce:
self._on_error(None, wscce)
else:
time.sleep(0.1)

View File

@@ -1,7 +1,7 @@
import json
import threading
from .event import Event
from .event import Event, AuthMessage
from .filter import Filters
from .message_pool import MessagePool
from .message_type import ClientMessageType
@@ -52,10 +52,11 @@ class RelayManager:
for relay in self.relays.values():
relay.close()
def publish_message(self, message: str):
def publish_message(self, message: str, url: str = None):
for relay in self.relays.values():
if relay.policy.should_write:
relay.publish(message)
if url is None or url == relay.url:
relay.publish(message)
def publish_event(self, event: Event):
"""Verifies that the Event is publishable before submitting it to relays"""
@@ -66,4 +67,15 @@ class RelayManager:
raise RelayException(
f"Could not publish {event.id}: failed to verify signature {event.signature}"
)
self.publish_message(event.to_message())
self.publish_message(event.to_message())
def publish_auth(self, auth: AuthMessage):
"""Verifies that the Event is publishable before submitting it to relays"""
if auth.signature is None:
raise RelayException(f"Could not publish {auth.id}: must be signed")
if not auth.verify():
raise RelayException(
f"Could not publish {auth.id}: failed to verify signature {auth.signature}"
)
self.publish_message(auth.to_message(), auth.relay_url)