Specs stay at repo root (cross-VM). Move deploy and code into logical projects with README per domain, updated manifest.yaml, and symlinks at legacy paths for VM122 backward compatibility.
46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
|
# Ligbox Ops webhook integration for Wazuh manager
|
|
# Copyright (C) 2026 Ibytera / Ligbox — based on Wazuh slack.py
|
|
|
|
import json
|
|
import os
|
|
import sys
|
|
|
|
try:
|
|
import requests
|
|
except ImportError:
|
|
print("pip install requests required")
|
|
sys.exit(1)
|
|
|
|
ALERT_INDEX = 1
|
|
WEBHOOK_INDEX = 3
|
|
LOG_FILE = "/var/ossec/logs/integrations.log"
|
|
SECRET = os.environ.get("LIGBOX_OPS_WEBHOOK_SECRET", "ligbox-wazuh-dev-secret")
|
|
|
|
|
|
def debug(msg: str) -> None:
|
|
with open(LOG_FILE, "a") as f:
|
|
f.write(msg + "\n")
|
|
|
|
|
|
def main(args):
|
|
if len(args) < 4:
|
|
sys.exit(2)
|
|
alert_file = args[ALERT_INDEX]
|
|
hook_url = args[WEBHOOK_INDEX]
|
|
with open(alert_file, "r") as f:
|
|
alert = json.load(f)
|
|
headers = {
|
|
"Content-Type": "application/json",
|
|
"X-Webhook-Secret": SECRET,
|
|
}
|
|
try:
|
|
res = requests.post(hook_url, json=alert, headers=headers, timeout=10)
|
|
debug(f"ligbox-ops POST {hook_url} -> {res.status_code} {res.text[:200]}")
|
|
except Exception as exc:
|
|
debug(f"ligbox-ops ERROR: {exc}")
|
|
sys.exit(1)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main(sys.argv)
|