Process orchestration platform for managing multiple CertPatrol instances
Project description
CertPatrol Orchestrator
Process orchestration platform for managing multiple CertPatrol instances with a modern web interface.
Features
- Process Orchestration: Spawn and manage multiple CertPatrol instances in parallel
- Project Management: Organize searches into projects
- Web UI: Modern, responsive web interface for managing everything
- Real-time Monitoring: Live dashboard showing active searches and recent discoveries
- Database Storage: All results persistently stored in SQLite
- CLI Interface: Command-line tools for automation
- Process Isolation: Each search runs independently - crashes don't affect others
Architecture
CertPatrol Orchestrator acts as a process orchestration platform that:
- Spawns CertPatrol processes with different search patterns
- Captures stdout from each process (one domain per line)
- Stores results in a centralized database
- Provides a web UI for management and monitoring
Installation
Install the latest release from PyPI:
pip install certpatrol-orchestrator
Or install from source:
git clone https://github.com/ToritoIO/CertPatrol-Orchestrator.git
cd CertPatrol-Orchestrator
pip install -r requirements.txt
pip install -e .
Quick Start
1. Initialize the database
certpatrol-orch init
2. Start the web server
certpatrol-orch server
# or pick a different port
# certpatrol-orch server --port 9090
Then open http://127.0.0.1:8080 in your browser.
Note: The server uses Waitress (production WSGI server) by default. Make sure it's installed:
pip install -r requirements.txt
3. Create a project and add searches via the Web UI
Or use the CLI:
# Create a project
certpatrol-orch add-project "Workers.dev Monitoring" -d "Monitor workers.dev domains"
# Add a search
certpatrol-orch add-search "Workers.dev Monitoring" "Workers Search" "workers\\.dev$"
# List searches to get the ID
certpatrol-orch list-searches
# Start the search
certpatrol-orch start <search_id>
# Check status
certpatrol-orch status
CLI Commands
certpatrol-orch init # Initialize database
certpatrol-orch server [--port | -p] # Start web server
certpatrol-orch add-project <name> # Create project
certpatrol-orch list-projects # List all projects
certpatrol-orch add-search <project> <name> <pattern> # Add search
certpatrol-orch list-searches [--project] # List searches
certpatrol-orch start <search_id> # Start search
certpatrol-orch stop <search_id> # Stop search
certpatrol-orch status # Show all search statuses
Web UI
The web interface provides:
- Dashboard: Overview of projects, active searches, and recent results
- Projects: Create, view, and delete projects
- Searches: Manage searches within projects (create, start, stop, delete)
- Results: View discovered domains with pagination
Search Creation Options
When creating a search, you can configure:
- Search Name: Descriptive name for the search
- Regex Pattern: Regular expression to match domain names
- Batch Size: Number of entries to fetch per request (default: 256)
- Poll Sleep: Initial poll interval in seconds (default: 3.0)
- Match base domains only (eTLD+1): Optional filter to match only base domains (e.g., example.co.uk instead of subdomain.example.co.uk)
All options include helpful tooltips. Advanced CertPatrol options are automatically configured with safe defaults to ensure proper output parsing and Orchestrator compatibility.
Deployment
CertPatrol Orchestrator uses Waitress, a production-ready pure-Python WSGI server. This ensures:
- ✅ Multi-threaded request handling (4 concurrent requests by default)
- ✅ Stable and battle-tested
- ✅ Works on all platforms (Windows, macOS, Linux)
- ✅ No compilation required
- ✅ Suitable for both local and multi-user deployments
For advanced deployment scenarios (reverse proxies, load balancing, etc.), see the Flask deployment documentation.
Configuration
Environment variables:
MANAGER_HOST: Web server host (default: 127.0.0.1)MANAGER_PORT: Web server port (default: 8080)MANAGER_DEBUG: Enable debug mode (default: False)MAX_CONCURRENT_SEARCHES: Max parallel searches (default: 10)
Requirements
- Python 3.8+
- CertPatrol
- Flask 3.0+
- SQLAlchemy 2.0+
Database Schema
projects: Project metadata
- id, name, description, created_at
searches: Search configurations
- id, project_id, name, pattern, ct_logs
- batch_size, poll_sleep, min_poll_sleep, max_poll_sleep, max_memory_mb
- etld1, verbose, quiet_warnings, quiet_parse_errors, debug_all
- checkpoint_prefix, status, pid, created_at
results: Discovered domains
- id, search_id, domain, discovered_at
How It Works
- Manager spawns CertPatrol as subprocess:
certpatrol -p <pattern> -c search_<id> -q - Background thread reads stdout line-by-line
- Each line (domain) is saved to database
- Web UI queries database for display
- Process status tracked in real-time
API Endpoints
REST API available at /api/*:
GET /api/projects- List projectsPOST /api/projects- Create projectGET /api/projects/<id>/searches- List searchesPOST /api/searches- Create searchPOST /api/searches/<id>/start- Start searchPOST /api/searches/<id>/stop- Stop searchGET /api/searches/<id>/results- Get resultsGET /api/status- System status
License
MIT License — see LICENSE file for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file certpatrol_orchestrator-0.1.3.tar.gz.
File metadata
- Download URL: certpatrol_orchestrator-0.1.3.tar.gz
- Upload date:
- Size: 116.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83a9483e47c0a2b696dc0d2bb174ec5111179f6e473709b86a2f45ad901db1b9
|
|
| MD5 |
82991519a3098b666eba47462fc7244e
|
|
| BLAKE2b-256 |
95622030781df42f382a9bf95b447fc4778c5624b54fadd9459e62a1a7734d4b
|
File details
Details for the file certpatrol_orchestrator-0.1.3-py3-none-any.whl.
File metadata
- Download URL: certpatrol_orchestrator-0.1.3-py3-none-any.whl
- Upload date:
- Size: 122.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
88b836265bb2eef3f8e7ffb00875a79ea95427a60bc8104952c6fca9759bf66e
|
|
| MD5 |
7503a099a470a5eeb147c8a88611300f
|
|
| BLAKE2b-256 |
e03519e7c8dd179d6bb26262fad8219dcd79bb21938efb8ba956fa52e4aa594a
|