Compare commits
3
Commits
babd77b1ef
...
afbe0e1add
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
afbe0e1add | ||
|
|
8fc85db44a | ||
|
|
a6bd89bb7e |
@@ -49,8 +49,12 @@ def applyConditions(definition, dictionary, outputs):
|
|||||||
return True, filter
|
return True, filter
|
||||||
|
|
||||||
if filter["operator"] == "in":
|
if filter["operator"] == "in":
|
||||||
|
if filter["filterkey"] == "called_dictionary":
|
||||||
if filtervalue in dictionary:
|
if filtervalue in dictionary:
|
||||||
return True, filter
|
return True, filter
|
||||||
|
else:
|
||||||
|
if filtervalue in dictionary.get(filter["filterkey"], {}):
|
||||||
|
return True, filter
|
||||||
|
|
||||||
if filter["operator"] == "is":
|
if filter["operator"] == "is":
|
||||||
if resolvedvalue is filtervalue:
|
if resolvedvalue is filtervalue:
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ import os
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from core.runtime.applyconditions import applyConditions
|
from core.runtime.applyconditions import applyConditions
|
||||||
|
from core.runtime.resolver import resolveItem
|
||||||
|
|
||||||
|
|
||||||
def buildFirewall(listener, outputs):
|
def buildFirewall(listener, outputs):
|
||||||
#firewall_log = os.environ.get("LOGS_FIREWALL", "false").lower() == "true"
|
#firewall_log = os.environ.get("LOGS_FIREWALL", "false").lower() == "true"
|
||||||
@@ -10,25 +12,22 @@ def buildFirewall(listener, outputs):
|
|||||||
status_code = 200
|
status_code = 200
|
||||||
outputs["firewall_allowed"] = []
|
outputs["firewall_allowed"] = []
|
||||||
for item in outputs[listener.recursive["source"]]:
|
for item in outputs[listener.recursive["source"]]:
|
||||||
|
resolved = resolveItem(listener, item)
|
||||||
|
|
||||||
match, filter = applyConditions(listener, item, outputs)
|
match, filter = applyConditions(listener, resolved, outputs)
|
||||||
|
|
||||||
if match:
|
if match:
|
||||||
status_code = filter.get("status_code", 200)
|
status_code = filter.get("status_code", 200)
|
||||||
|
|
||||||
|
if filter.get("execute", False):
|
||||||
|
from core.apirequest.execute import executeRequest
|
||||||
|
response, outputs = executeRequest(filter["execute"], outputs, resolved)
|
||||||
|
|
||||||
if firewall_log:
|
if firewall_log:
|
||||||
logging.info(filter.get("print"))
|
logging.info(filter.get("print"))
|
||||||
logging.info(f"Returning status_code: {status_code}")
|
logging.info(f"Returning status_code: {status_code}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
#This needs to be moved into definitions but until logic is put in place it lives here.
|
|
||||||
if "com.loxthelion.rmass_message_id" in item.get("content", {}):
|
|
||||||
status_code = 200
|
|
||||||
if firewall_log:
|
|
||||||
logging.info("Excluding previously imported items")
|
|
||||||
logging.info(f"Returning status_code: {status_code}")
|
|
||||||
|
|
||||||
continue
|
|
||||||
|
|
||||||
outputs["firewall_allowed"].append(item)
|
outputs["firewall_allowed"].append(item)
|
||||||
|
|
||||||
if outputs["firewall_allowed"] != []:
|
if outputs["firewall_allowed"] != []:
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
def resolveItem(action, item):
|
def resolveItem(action, item):
|
||||||
resolver_log = os.environ.get("LOGS_RESOLVER", "false").lower() == "true"
|
#resolver_log = os.environ.get("LOGS_RESOLVER", "false").lower() == "true"
|
||||||
|
resolver_log = True
|
||||||
|
|
||||||
resolved = {}
|
resolved = {}
|
||||||
if hasattr(action, "resolve"):
|
if hasattr(action, "resolve"):
|
||||||
@@ -9,6 +10,9 @@ def resolveItem(action, item):
|
|||||||
target = item
|
target = item
|
||||||
try:
|
try:
|
||||||
for key in keys:
|
for key in keys:
|
||||||
|
if isinstance(target, dict):
|
||||||
|
target = target.get(key)
|
||||||
|
else:
|
||||||
target = target[key]
|
target = target[key]
|
||||||
|
|
||||||
except (KeyError, IndexError) as error:
|
except (KeyError, IndexError) as error:
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ outputs = {
|
|||||||
filters = [
|
filters = [
|
||||||
{
|
{
|
||||||
"filterkey": "message_body",
|
"filterkey": "message_body",
|
||||||
#"filterkey_lib": "outputs",
|
#"filterkey_lib": "resolved",
|
||||||
"filterkey_format": "length",
|
"filterkey_format": "length",
|
||||||
"execute": synapsenotify,
|
"execute": synapsenotify,
|
||||||
"operator": "<",
|
"operator": "<",
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
from plugins.rmass.operations import rmassmessagepush
|
from plugins.rmass.operations import rmassmessagepush
|
||||||
|
from plugins.rmass.actions import synapsenotify
|
||||||
|
|
||||||
name = "Synapse Listener"
|
name = "Synapse Listener"
|
||||||
|
|
||||||
@@ -8,6 +9,19 @@ outputs = {
|
|||||||
"events": "events",
|
"events": "events",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resolve = {
|
||||||
|
"get": {
|
||||||
|
"sender": ["sender"],
|
||||||
|
"event_id": ["event_id"],
|
||||||
|
"message_body": ["content", "body"],
|
||||||
|
"content": ["content"],
|
||||||
|
"type": ["type"],
|
||||||
|
"room_id": ["room_id"],
|
||||||
|
"timestamp": ["origin_server_ts"],
|
||||||
|
"filter_item": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
recursive = {
|
recursive = {
|
||||||
"source": "events",
|
"source": "events",
|
||||||
"reverse": False,
|
"reverse": False,
|
||||||
@@ -20,7 +34,7 @@ execute = rmassmessagepush
|
|||||||
|
|
||||||
filters = [
|
filters = [
|
||||||
{
|
{
|
||||||
"filterkey": "event",
|
"filterkey": "filter_item",
|
||||||
"operator": "in",
|
"operator": "in",
|
||||||
"filtervalue": "state_key",
|
"filtervalue": "state_key",
|
||||||
"print": "Excluding state.key event",
|
"print": "Excluding state.key event",
|
||||||
@@ -40,6 +54,23 @@ filters = [
|
|||||||
"print": "Excluding non-room message event",
|
"print": "Excluding non-room message event",
|
||||||
"status_code": 200,
|
"status_code": 200,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"filterkey": "content",
|
||||||
|
"operator": "in",
|
||||||
|
"filtervalue": "com.loxthelion.rmass_message_id",
|
||||||
|
"print": "Excluding imported message loop item",
|
||||||
|
"status_code": 200,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filterkey": "message_body",
|
||||||
|
#"filterkey_lib": "resolved",
|
||||||
|
"filterkey_format": "length",
|
||||||
|
"execute": synapsenotify,
|
||||||
|
"operator": "<",
|
||||||
|
"filtervalue": 5,
|
||||||
|
"print": f"Message body is less than 5 characters. Notifying with {synapsenotify.name}...",
|
||||||
|
"status_code":200
|
||||||
|
},
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user