fix get ep verdict
All checks were successful
Build and Deploy MITM Webserver / build (push) Successful in 1m40s
All checks were successful
Build and Deploy MITM Webserver / build (push) Successful in 1m40s
This commit is contained in:
@@ -25,6 +25,21 @@ def _db_text(value: Any) -> Any:
|
|||||||
return str(value)
|
return str(value)
|
||||||
|
|
||||||
|
|
||||||
|
def _serialize_row_for_broadcast(row: Dict[str, Any]) -> Dict[str, Any]:
|
||||||
|
serialized = dict(row)
|
||||||
|
|
||||||
|
raw_val = serialized.get("raw")
|
||||||
|
if isinstance(raw_val, (bytes, bytearray)):
|
||||||
|
serialized["raw_b64"] = base64.b64encode(raw_val).decode("ascii")
|
||||||
|
serialized.pop("raw", None)
|
||||||
|
|
||||||
|
for key, value in list(serialized.items()):
|
||||||
|
if hasattr(value, "isoformat"):
|
||||||
|
serialized[key] = value.isoformat()
|
||||||
|
|
||||||
|
return serialized
|
||||||
|
|
||||||
|
|
||||||
class DatabasePool:
|
class DatabasePool:
|
||||||
"""Asyncpg connection pool wrapper used by the packet APIs."""
|
"""Asyncpg connection pool wrapper used by the packet APIs."""
|
||||||
|
|
||||||
@@ -87,7 +102,7 @@ class DatabasePool:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
async with self._pool.acquire() as conn:
|
async with self._pool.acquire() as conn:
|
||||||
new_row = await conn.fetchrow(
|
row = await conn.fetchrow(
|
||||||
"""
|
"""
|
||||||
INSERT INTO packets (
|
INSERT INTO packets (
|
||||||
packet_uid,
|
packet_uid,
|
||||||
@@ -157,7 +172,7 @@ class DatabasePool:
|
|||||||
dpi_metadata = COALESCE(EXCLUDED.dpi_metadata, packets.dpi_metadata),
|
dpi_metadata = COALESCE(EXCLUDED.dpi_metadata, packets.dpi_metadata),
|
||||||
telemetry_metadata = COALESCE(EXCLUDED.telemetry_metadata, packets.telemetry_metadata),
|
telemetry_metadata = COALESCE(EXCLUDED.telemetry_metadata, packets.telemetry_metadata),
|
||||||
raw = COALESCE(EXCLUDED.raw, packets.raw)
|
raw = COALESCE(EXCLUDED.raw, packets.raw)
|
||||||
RETURNING id, timestamp
|
RETURNING *
|
||||||
""",
|
""",
|
||||||
pkt_info["packet_uid"],
|
pkt_info["packet_uid"],
|
||||||
pkt_info.get("ingress_if"),
|
pkt_info.get("ingress_if"),
|
||||||
@@ -195,9 +210,9 @@ class DatabasePool:
|
|||||||
logger.exception("DB upsert failed")
|
logger.exception("DB upsert failed")
|
||||||
return
|
return
|
||||||
|
|
||||||
if new_row:
|
if row:
|
||||||
pkt_info["id"] = new_row["id"]
|
persisted = _serialize_row_for_broadcast(dict(row))
|
||||||
pkt_info["timestamp"] = new_row["timestamp"].isoformat()
|
pkt_info.update(persisted)
|
||||||
|
|
||||||
if self.broadcaster:
|
if self.broadcaster:
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user