diff --git a/Dockerfile b/Dockerfile index 5148e53..fe0dd66 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,11 +8,12 @@ RUN cargo build --release FROM debian:bookworm-slim RUN apt-get update \ - && apt-get install -y --no-install-recommends ca-certificates \ + && apt-get install -y --no-install-recommends ca-certificates ffmpeg redis-tools sqlite3 \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY --from=builder /app/target/release/camfinder /usr/local/bin/camfinder COPY cidrs.txt /app/cidrs.txt +COPY rtsp_paths.txt /app/rtsp_paths.txt ENTRYPOINT ["camfinder"] diff --git a/README.md b/README.md index 73eea93..93e4fbb 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,12 @@ Scanner TCP em Rust para descobrir hosts em CIDRs internos, testar a porta `554` e salvar progresso e endpoints abertos em PostgreSQL. -O projeto tem três modos: +O projeto tem quatro modos: - `local`: roda o scan inteiro no processo atual. - `coordinator`: recebe conexões de workers, distribui blocos e grava resultados no banco. - `worker`: conecta ao coordenador, recebe blocos e testa os hosts. +- `rtsp`: lê destinos de um CSV e testa URLs RTSP com paths predefinidos. O progresso é salvo por bloco, então o scan pode ser retomado sem repetir o que já foi concluído. @@ -15,6 +16,7 @@ O progresso é salvo por bloco, então o scan pode ser retomado sem repetir o qu 1. Copie `.env.example` para `.env`. 2. Configure `DATABASE_URL` apontando para um Postgres acessível. 3. Rode `cargo run -- local`, `cargo run -- coordinator` ou `cargo run -- worker`. +4. Para RTSP, rode `cargo run -- rtsp --targets-file targets.csv`. ## Docker Compose @@ -24,6 +26,12 @@ O `docker-compose.yml` já sobe: - `coordinator` exposto no host pela porta `666`. - `worker` conectado ao coordenador na rede interna do compose. +Para o fluxo RTSP com Redis, use `docker-compose.redis-rtsp.yml`: + +- `redis` como fila. +- `coordinator` para ler `camfinder-open-rtsp.csv` e alimentar a fila. +- `worker-1` e `worker-2` para consumir IPs, testar paths RTSP e salvar screenshots e SQLite. + Para escalar workers: - `docker compose up --scale worker=3` @@ -51,6 +59,34 @@ Para workers de outras máquinas, use `vps.valmo.dev:666` como endereço do coor - `COORDINATOR_BIND` - `COORDINATOR_ADDR` - `WORKER_NAME` +- `RTSP_TARGETS` +- `RTSP_TARGETS_FILE` +- `RTSP_PATHS` +- `RTSP_PATHS_FILE` +- `REDIS_URL` +- `RTSP_QUEUE_NAME` +- `RTSP_INPUT_CSV` +- `RTSP_WORKER_COUNT` +- `RTSP_SNAPSHOT_DIR` +- `RTSP_SQLITE_PATH` +- `RTSP_CAPTURE_TIMEOUT_MS` + +## Modo RTSP + +O modo `rtsp` monta URLs no formato `rtsp://:554/` e testa a conexão +via `DESCRIBE`, sem tentar usuário, senha ou variações de autenticação. + +Por padrão, ele lê os paths de [rtsp_paths.txt](/home/valmo/Documents/CamFinder/rtsp_paths.txt). + +Exemplo: + +```bash +cargo run -- rtsp --targets-file targets.csv +``` + +No fluxo `docker-compose.redis-rtsp.yml`, os workers salvam os frames em +`dump/feeds/_.png` e gravam os resultados em +`dump/rtsp-results.sqlite`. ## Restrições