Separated listener by introducing create listener. Working State. Message loop prevention filters added to server

This commit is contained in:
Lyncoln
2026-10-17 03:42:46 -04:00
parent d260d3681e
commit c7628df30e
14 changed files with 84 additions and 51 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
+13 -6
View File
@@ -9,15 +9,22 @@ def buildLog (action, outputs, response):
f"{outputs[print_key]}", f"{outputs[print_key]}",
) )
except: (KeyError, TypeError) except (KeyError, TypeError):
pass
if action.showstatus is True and response.status_code in [200, 204]: if action.showstatus is True and response.ok:
print(f"{action.name} successful") print(f"{action.name} successful")
elif action.showstatus is True and response.status_code not in [200, 204]: elif action.showstatus is True and not response.ok:
print(f"{action.name} failed with status code {response.status_code}") print(f"{action.name} failed with status code {response.status_code}")
try: try:
print(f"Response: {response.json()["error"]}") response_data = response.json()
except KeyError: except ValueError:
print(f"Response:", response.json()) response_data = response.text
if isinstance(response_data, dict):
print("Response:", response_data.get("error", response_data))
else:
print("Response:", response_data)
return return
+6 -6
View File
@@ -2,7 +2,7 @@ import json
def buildOutput(response, action, outputs): def buildOutput(response, action, outputs):
if hasattr(action, "outputs"): if hasattr(action, "outputs"):
if response != None: if response is not None:
try: try:
response_data = response.json() response_data = response.json()
except AttributeError: except AttributeError:
@@ -20,13 +20,13 @@ def buildOutput(response, action, outputs):
for output_name, response_key in action.outputs.items(): for output_name, response_key in action.outputs.items():
if key == response_key: if key == response_key:
outputs[output_name] = value outputs[output_name] = value
return outputs
else: else:
print("No response received"),
return outputs return outputs
#return outputs
+2 -2
View File
@@ -11,8 +11,8 @@ def recursiveSet(definition, outputs):
for job in recursiveset: for job in recursiveset:
outputs, response = buildAction(job, outputs) outputs, response = buildAction(job, outputs)
print("MESSAGE BODY DEBUG") #print("MESSAGE BODY DEBUG")
print(resolved["messages"]) #print(resolved["messages"])
return outputs return outputs
from core.execution.action.action import buildAction from core.execution.action.action import buildAction
Binary file not shown.
+50
View File
@@ -0,0 +1,50 @@
import json
from core.runtime.outputs import buildOutput
from core.execution.operation import buildOperation
def buildListener(listener, self):
if self.path.startswith(listener.acceptpath):
#Prints can used buildlog for listener runtime
print("Matrix transaction received")
content_length = int(self.headers["Content-Length"])
data = self.rfile.read(content_length)
request = json.loads(data)
outputs = {}
outputs = buildOutput(data, listener, outputs)
#if applyConditions(listener, outputs)
# continue
print(outputs)
for event in outputs[listener.recursive["source"]]:
print("DEBUG")
print(listener.recursive["source"])
if "state_key" in event:
continue
if event.get("sender") != "@lyncoln:loxthelion.com":
continue
if "com.loxthelion.rmass_message_id" in event.get("content", {}):
continue
if event.get("type") == "m.room.message":
# Process and forward to RMASS
outputs = buildOperation(listener.execute, outputs)
self.send_response(200)
self.send_header("Content-Type", "application/json")
self.send_header("Content-Length", "2")
self.end_headers()
self.wfile.write(b"{}")
else:
self.send_error(404)
return outputs
+2 -33
View File
@@ -9,6 +9,7 @@ from core.runtime.resolver import resolveItem
from plugins.rmass.listeners import synapselistener from plugins.rmass.listeners import synapselistener
from plugins.rmass.operations import rmassmessagepush from plugins.rmass.operations import rmassmessagepush
from core.execution.operation import buildOperation from core.execution.operation import buildOperation
from core.server.createlistener import buildListener
port = int(os.environ.get("SERVER_PORT", 19001)) port = int(os.environ.get("SERVER_PORT", 19001))
@@ -97,39 +98,7 @@ class RequestHandler(BaseHTTPRequestHandler):
def do_PUT(self): def do_PUT(self):
print("PUT request received") print("PUT request received")
if self.path.startswith("/_matrix/app/v1/transactions/"): outputs = buildListener(synapselistener, self)
print("Matrix transaction received")
outputs = {}
content_length = int(self.headers["Content-Length"])
data = self.rfile.read(content_length)
request = json.loads(data)
requestjson = json.dumps(request, indent=4)
#print (request)
#print(requestjson)
for event in request["events"]:
if "state_key" in event:
# Room state event
continue
if event.get("type") == "m.room.message":
# Process the message
print (event)
outputs = buildOutput(data, synapselistener, outputs)
#print (event)
outputs = buildOperation(rmassmessagepush, outputs)
self.send_response(200)
self.send_header("Content-Type", "application/json")
self.send_header("Content-Length", "2")
self.end_headers()
self.wfile.write(b"{}")
else:
self.send_error(404)
def startServer(): def startServer():
server = HTTPServer(("0.0.0.0", port), RequestHandler) server = HTTPServer(("0.0.0.0", port), RequestHandler)
+12 -5
View File
@@ -1,12 +1,19 @@
name = "Reception Test" from plugins.rmass.operations import rmassmessagepush
kind = "action"
showstatus = False
name = "Synapse Listener"
kind = "listener"
outputs = { outputs = {
"events": "events", "events": "events",
} }
acceptpath = "/_matrix/app/v1/transactions/"
execute = rmassmessagepush
recursive = {
"source": "events",
"reverse": False,
"label": "outboundmessage",
}
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
{"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJleHAiOjE3OTIyMTE4NzEsIm5iZiI6MTc5MjIxMTY5MSwic3ViIjoiMjM4MzAyIiwidXNlcm5hbWUiOiJYeHhvdGlxIiwidXNlclR5cGUiOjEsInN0YWdlTmFtZSI6Ilh4eG90aXEiLCJhcHByb3ZlZCI6MSwibG9jYXRpb25JZCI6NDcyLCJzZWFyY2hDaXR5IjoiYXRsYW50YSIsImNvdW50cnlTaG9ydCI6IlVTIiwic2Vzc2lvbkNvdW50cnlDb250aW5lbnQiOiJOQSIsImlzRnJvemVuIjowLCJsb2NhdGlvbkxhYmVsIjoiQXRsYW50YSwgR0EiLCJpc3MiOiJodHRwczovL3JlbnRtYXNzZXVyLmNvbSIsImlhdCI6MTc5MjIxMTc1MX0.yPPrAkT6ZnR9Y3rLhUkWSgL6X_I0UuKznujBg2L-UkI3kGPZbe2G4ADSZBq0DGxiAVnmglwbhXZHs6QuHwIOTQ", "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJleHAiOjE3OTQ4MDM3NTEsIm5iZiI6MTc5MjIxMTY5MSwianRpIjoia3FxVjB1dEpnRDM4V2MwNnE1b0l2Mkx6SGJGYTVKcjM2aHRtZUQxRk1vVT0iLCJpc3MiOiJodHRwczovL3JlbnRtYXNzZXVyLmNvbSIsImlhdCI6MTc5MjIxMTc1MSwic3ViIjoiMjM4MzAyIn0.4QG6fWWAwzvmox4QmWmcP6bIS6pA7Vi2srsppplI0BDXI2NWbigxfswrTrmb1-QI7PpB9azHDP7Xt_gY_6_pnA"} {"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJleHAiOjE3OTIyMjI5MjQsIm5iZiI6MTc5MjIyMjc0NCwic3ViIjoiMjM4MzAyIiwidXNlcm5hbWUiOiJYeHhvdGlxIiwidXNlclR5cGUiOjEsInN0YWdlTmFtZSI6Ilh4eG90aXEiLCJhcHByb3ZlZCI6MSwibG9jYXRpb25JZCI6NDcyLCJzZWFyY2hDaXR5IjoiYXRsYW50YSIsImNvdW50cnlTaG9ydCI6IlVTIiwic2Vzc2lvbkNvdW50cnlDb250aW5lbnQiOiJOQSIsImlzRnJvemVuIjowLCJsb2NhdGlvbkxhYmVsIjoiQXRsYW50YSwgR0EiLCJpc3MiOiJodHRwczovL3JlbnRtYXNzZXVyLmNvbSIsImlhdCI6MTc5MjIyMjgwNH0.ZAGwq0DlacX_VBfysDOu6pAlt1FzwccZe1zIlMZcozOs_C7jOiOhkC-o1BH4-UPxe_MniYKux3s5br6kwJHFqQ", "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJleHAiOjE3OTQ4MTQ4MDQsIm5iZiI6MTc5MjIyMjc0NCwianRpIjoiRmVoVGM1cVFwQUQvRWtjYW1aLy85YllLbVB2ZEhPSXYyUE9YM25aTlhPRT0iLCJpc3MiOiJodHRwczovL3JlbnRtYXNzZXVyLmNvbSIsImlhdCI6MTc5MjIyMjgwNCwic3ViIjoiMjM4MzAyIn0.BOPpuwg88qWk5A0XciE2wi_4mC6V9jvnQzWms0vxIkWctsGMQnhLABzuD8Zjofdf1qK5pQXxf9010SYV5c9r8A"}