import hashlib
import json
import os
import re
import time
from pathlib import Path
import subprocess
import sys
d=json.loads(Path('/etc/contextra-maintenance/server.json').read_text())
sys.path.insert(0,d['paths']['tools'])
import compose_backend as cb
rows=cb.containers()
result={}
for role in ('analytics','ai-gateway','ai-control-sidecar'):
    row=next(x for x in rows if x['Config']['Labels']['com.docker.compose.service']==role)
    p=subprocess.run(['docker','logs','--since','6m','--tail','1500','--timestamps',row['Id']],capture_output=True,timeout=15)
    text=p.stdout.decode(errors='replace')+'\n'+p.stderr.decode(errors='replace')
    selected=[]
    for line in text.splitlines():
        if re.search(r'fight_r5_|camera.?24|camera_id.?[=:].?24|cameraId.{0,4}24|7da55541|37ffe64f|camera-1fdaa47a',line):
            line=re.sub(r'\b(?:rtsps?|https?|wss?)://\S+','[URI_REDACTED]',line)
            line=re.sub(r'(?i)Bearer\s+\S+','Bearer [REDACTED]',line)
            selected.append(line)
    result[role]={'exit_code':p.returncode,'lines':selected[-350:]}
print(json.dumps({'at_ms':time.time_ns()//1000000,'logs':result}))
