feat: backend, buzon de periodistas, panel admin y filtro temporal

/api/submit       buzon con multer; los ficheros se guardan fuera del
                    webroot, con rate limit por IP, honeypot y sin registrar
                    la IP de quien envia
  /api/submissions  panel admin, fail-closed: sin ADMIN_TOKEN ni fichero de
                    token no se sirve nada
  /api/system       metricas de procesos y colecciones para el panel
  /api/img          proxy de imagenes con anti-SSRF (rechaza IPs privadas y
                    loopback resolviendo el DNS antes de pedir)
  /api/stats        metricas agregadas, cacheadas cada 6 h

/api/data distingue dos modos. Con rango de fechas ordena por frescura y
filtra solo la coleccion de noticias: wikipedia y torrents no tienen campo
fecha y filtrarlas vaciaria el grafo de las conexiones noticia-leak, que son
la razon de ser del proyecto. Sin rango, devuelve una muestra de todo el
archivo: con orden por fecha y limite, los dos modos daban el mismo grafo.

La coleccion de aristas es configurable por COMPARACIONES_COL, para poder
conmutar al motor semantico sin tocar codigo.

Las rutas de imagenes ya no estan cableadas: salen de WIKI_IMAGES_DIR o se
deducen de la ubicacion del fichero.
This commit is contained in:
hacklab 2026-08-23 17:11:56 +02:00
parent 91e6c11a08
commit cfae328d22
14 changed files with 516 additions and 135 deletions