chore: initial import
This commit is contained in:
113
scripts/event_generation_demo.py
Executable file
113
scripts/event_generation_demo.py
Executable file
@@ -0,0 +1,113 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
VaultMesh Command Center: Event Generation Demonstration
|
||||
|
||||
This script simulates the event generation mechanism of the VaultMesh Command Center.
|
||||
"""
|
||||
|
||||
import uuid
|
||||
import json
|
||||
import time
|
||||
from datetime import datetime, timezone
|
||||
import requests
|
||||
|
||||
class EventGenerator:
|
||||
def __init__(self, cc_url="http://localhost:8088"):
|
||||
self.cc_url = cc_url
|
||||
self.node_id = str(uuid.uuid4())
|
||||
self.hostname = "demo-node"
|
||||
self.os_profile = "DemoVault"
|
||||
|
||||
def generate_heartbeat(self):
|
||||
"""Generate a heartbeat event payload."""
|
||||
return {
|
||||
"node_id": self.node_id,
|
||||
"hostname": self.hostname,
|
||||
"os_profile": self.os_profile,
|
||||
"cloudflare_ok": True,
|
||||
"services_ok": True,
|
||||
"vaultmesh_root": "/var/lib/vaultmesh",
|
||||
"timestamp": datetime.now(timezone.utc).isoformat(),
|
||||
"metrics": {
|
||||
"uptime_seconds": int(time.time()),
|
||||
"load1": 0.5,
|
||||
"load5": 0.3,
|
||||
"load15": 0.2
|
||||
}
|
||||
}
|
||||
|
||||
def generate_scan_result(self):
|
||||
"""Generate a mock scan result event payload."""
|
||||
return {
|
||||
"cmd": "sovereign-scan",
|
||||
"node_id": self.node_id,
|
||||
"ts": datetime.now(timezone.utc).isoformat(),
|
||||
"status": "success",
|
||||
"stdout": json.dumps({
|
||||
"summary": {
|
||||
"critical": 1,
|
||||
"high": 3,
|
||||
"medium": 5,
|
||||
"low": 10,
|
||||
"info": 15
|
||||
},
|
||||
"findings_real": False,
|
||||
"receipt_hash": str(uuid.uuid4())
|
||||
}),
|
||||
"exit_code": 0
|
||||
}
|
||||
|
||||
def generate_command_result(self):
|
||||
"""Generate a mock command result event payload."""
|
||||
return {
|
||||
"node_id": self.node_id,
|
||||
"cmd": "service-status",
|
||||
"ts": datetime.now(timezone.utc).isoformat(),
|
||||
"status": "success",
|
||||
"stdout": "cloudflared: active\nnginx: active",
|
||||
"exit_code": 0,
|
||||
"nonce": str(uuid.uuid4())
|
||||
}
|
||||
|
||||
def send_event(self, event_type, event_data):
|
||||
"""Send an event to the Command Center."""
|
||||
try:
|
||||
response = requests.post(
|
||||
f"{self.cc_url}/api/events",
|
||||
json={
|
||||
"kind": event_type,
|
||||
"node_id": self.node_id,
|
||||
"body": event_data
|
||||
},
|
||||
headers={"Content-Type": "application/json"}
|
||||
)
|
||||
response.raise_for_status()
|
||||
print(f"[SUCCESS] Sent {event_type} event for node {self.node_id}")
|
||||
return response.json()
|
||||
except requests.RequestException as e:
|
||||
print(f"[ERROR] Failed to send {event_type} event: {e}")
|
||||
return None
|
||||
|
||||
def main():
|
||||
generator = EventGenerator()
|
||||
|
||||
print("🚀 VaultMesh Command Center Event Generation Demo")
|
||||
print("---------------------------------------------")
|
||||
|
||||
# Simulate event generation
|
||||
events = [
|
||||
("heartbeat", generator.generate_heartbeat()),
|
||||
("scan", generator.generate_scan_result()),
|
||||
("command", generator.generate_command_result())
|
||||
]
|
||||
|
||||
for event_type, event_data in events:
|
||||
print(f"\nGenerating {event_type.upper()} event:")
|
||||
print(json.dumps(event_data, indent=2))
|
||||
result = generator.send_event(event_type, event_data)
|
||||
if result:
|
||||
print(f"Event ID: {result.get('id')}")
|
||||
time.sleep(1) # Add a small delay between events
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user