Implement ingesting to Redis from Threshold

master
Mark Veidemanis 2 years ago
parent e3b2e1f36d
commit 79b1bee9e4

@ -41,7 +41,7 @@ def store_message(msg):
try: try:
# Bulk index operations # Bulk index operations
api_response = api_instance.bulk(body_post) # , async_req=True api_response = api_instance.bulk(body_post) # , async_req=True
print(api_response) # print(api_response)
except ApiException as e: except ApiException as e:
print("Exception when calling IndexApi->bulk: %s\n" % e) print("Exception when calling IndexApi->bulk: %s\n" % e)
@ -80,7 +80,7 @@ def store_message_bulk(data):
try: try:
# Bulk index operations # Bulk index operations
api_response = api_instance.bulk(body_post) # , async_req=True api_response = api_instance.bulk(body_post) # , async_req=True
print(api_response) # print(api_response)
except ApiException as e: except ApiException as e:
print("Exception when calling IndexApi->bulk: %s\n" % e) print("Exception when calling IndexApi->bulk: %s\n" % e)

@ -13,6 +13,25 @@ services:
depends_on: depends_on:
- db - db
threshold:
image: pathogen/threshold:latest
build: ./legacy/docker
volumes:
- ${PORTAINER_GIT_DIR}:/code
- ${THRESHOLD_CONFIG_DIR}:/code/legacy/conf/live
#- ${THRESHOLD_TEMPLATE_DIR}:/code/conf/templates
- ${THRESHOLD_CERT_DIR}:/code/legacy/conf/cert
ports:
- "${THRESHOLD_LISTENER_PORT}:${THRESHOLD_LISTENER_PORT}"
- "${THRESHOLD_RELAY_PORT}:${THRESHOLD_RELAY_PORT}"
- "${THRESHOLD_API_PORT}:${THRESHOLD_API_PORT}"
env_file:
- .env
# for development
extra_hosts:
- "host.docker.internal:host-gateway"
volumes_from:
- tmp
db: db:
image: manticoresearch/manticore image: manticoresearch/manticore

@ -18,8 +18,8 @@
"Key": "key.pem", "Key": "key.pem",
"Certificate": "cert.pem", "Certificate": "cert.pem",
"RedisSocket": "/var/run/redis/redis.sock", "RedisSocket": "/var/run/redis/redis.sock",
"RedisDBEphemeral": 2, "RedisDBEphemeral": 1,
"RedisDBPersistent": 3, "RedisDBPersistent": 0,
"UsePassword": false, "UsePassword": false,
"ConnectOnCreate": false, "ConnectOnCreate": false,
"AutoReg": false, "AutoReg": false,
@ -31,12 +31,13 @@
"User": "x", "User": "x",
"Password": "x" "Password": "x"
}, },
"Logstash": { "Ingest": {
"Host": "127.0.0.1", "Key": "queue.irc",
"Port": "4000" "Enabled": true
}, },
"ChanKeep": { "ChanKeep": {
"Enabled": false, "Enabled": false,
"Provision": false,
"MaxRelay": 30, "MaxRelay": 30,
"SigSwitch": 20 "SigSwitch": 20
}, },

@ -1,27 +0,0 @@
import logging
from json import dumps
import logstash
import main
logger = None
def init_logstash():
global logger
logger = logging.getLogger("ingest")
logger.setLevel(logging.INFO)
logger.addHandler(
logstash.TCPLogstashHandler(
main.config["Logstash"]["Host"],
int(main.config["Logstash"]["Port"]),
version=1,
)
)
def sendLogstashNotification(text):
if logger is not None:
logger.info(dumps(text))
return True
return False

@ -11,8 +11,8 @@ RUN chown pathogen:pathogen /venv
USER pathogen USER pathogen
ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1 ENV PYTHONUNBUFFERED=1
WORKDIR /code WORKDIR /code/legacy
COPY requirements.prod.txt /code/ COPY requirements.prod.txt /code/legacy
RUN python -m venv /venv RUN python -m venv /venv
RUN . /venv/bin/activate && pip install -r requirements.prod.txt RUN . /venv/bin/activate && pip install -r /code/legacy/requirements.prod.txt
CMD . /venv/bin/activate && exec python /code/threshold CMD . /venv/bin/activate && exec python /code/legacy/threshold

@ -1,2 +0,0 @@
unixsocket /var/run/redis/redis.sock
unixsocketperm 777

@ -3,7 +3,6 @@ twisted
pyOpenSSL pyOpenSSL
redis redis
pyYaML pyYaML
python-logstash
service_identity service_identity
siphashc siphashc
Klein Klein

@ -1,5 +1,6 @@
import json
import main import main
from core.logstash import sendLogstashNotification
from core.relay import sendRelayNotification from core.relay import sendRelayNotification
from modules import userinfo from modules import userinfo
from utils.dedup import dedup from utils.dedup import dedup
@ -64,6 +65,12 @@ def parsemeta(numName, c):
) )
def queue_message(c):
message = json.dumps(c)
print("APPENDING MESSAGE", message)
main.g.sadd(main.config["Ingest"]["Key"], message)
def event( def event(
numName, c numName, c
): # yes I'm using a short variable because otherwise it goes off the screen ): # yes I'm using a short variable because otherwise it goes off the screen
@ -75,8 +82,9 @@ def event(
if "muser" in c.keys(): if "muser" in c.keys():
del c["muser"] del c["muser"]
sortedKeys = {k: c[k] for k in order if k in c} # Sort dict keys according to order # sortedKeys = {k: c[k] for k in order if k in c} # Sort dict keys according to order
sortedKeys["src"] = "irc" # sortedKeys["src"] = "irc"
if main.config["Logstash"]["Enabled"]: c["src"] = "irc"
sendLogstashNotification(sortedKeys) if main.config["Ingest"]["Enabled"]:
sendRelayNotification(sortedKeys) queue_message(c)
sendRelayNotification(c)

@ -4,7 +4,6 @@ twisted
pyOpenSSL pyOpenSSL
redis redis
pyYaML pyYaML
python-logstash
service_identity service_identity
siphashc siphashc
Klein Klein

@ -5,7 +5,6 @@ from os import getenv
from signal import SIGINT, signal from signal import SIGINT, signal
from sys import stderr, stdout from sys import stderr, stdout
import core.logstash
import main import main
import modules.counters import modules.counters
from api.views import API from api.views import API
@ -36,7 +35,7 @@ if "--migrate" in sys.argv:
loadCommands() loadCommands()
core.logstash.init_logstash() # core.logstash.init_logstash()
signal(SIGINT, handler) # Handle Ctrl-C and run the cleanup routine signal(SIGINT, handler) # Handle Ctrl-C and run the cleanup routine
stdout = getwriter("utf8")(stdout) # this is a generic fix but we all know stdout = getwriter("utf8")(stdout) # this is a generic fix but we all know
stderr = getwriter("utf8")(stderr) # it's just for the retards on Rizon using stderr = getwriter("utf8")(stderr) # it's just for the retards on Rizon using

Loading…
Cancel
Save