All checks were successful
build-and-deploy / build (push) Successful in 2m0s
Continuous whole-IPv4 rolling sweep for open TCP 554, feeding the same cameras table as the passive scraper (discovery_source=masscan). - masscan_config.py: env-driven knobs (range, ports, rate, retries, excludes) - masscan_scanner.py: JSON-lines parser, rtsp://IP/ URL + url_hash dedupe, ip-api geolocation, insert/refresh, NATS publish for new finds - run_masscan_service.py: long-lived rolling-sweep runner (streams results in, restarts on pass completion); fails closed without an excludefile - deploy/: systemd unit + README + excludes file for the Pi host - .env.example: masscan section Verified end-to-end against a local Postgres: parse, insert, and dedupe (0 new on re-ingest) all pass.
29 lines
1 KiB
Desktop File
29 lines
1 KiB
Desktop File
[Unit]
|
|
Description=OSINT dashboard — masscan rolling sweep (open RTSP port 554)
|
|
Documentation=https://forgejo.siriusdevops.com/sirius/osint-dashboard
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
# masscan needs raw sockets (CAP_NET_RAW) — run as root on the Pi host.
|
|
User=root
|
|
WorkingDirectory=/opt/siriusdevops/osint-dashboard
|
|
EnvironmentFile=-/etc/osint-dashboard/masscan.env
|
|
# Point at the compose-published Postgres on the HOST (127.0.0.1:5432), not the
|
|
# docker service name 'postgres' which doesn't resolve outside the compose net.
|
|
Environment=DB_HOST=127.0.0.1
|
|
Environment=DB_PORT=5432
|
|
Environment=DB_USER=osint
|
|
Environment=DB_PASSWORD=osint
|
|
Environment=DB_NAME=osint_data
|
|
Environment=MASSCAN_EXCLUDEFILE=/etc/osint-dashboard/masscan-excludes.txt
|
|
ExecStart=/opt/siriusdevops/osint-dashboard/.venv-masscan/bin/python app/run_masscan_service.py
|
|
Restart=always
|
|
RestartSec=10
|
|
# Log the sweep to journald (read with: journalctl -u osint-masscan -f)
|
|
StandardOutput=journal
|
|
StandardError=journal
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|