A unified platform to back up, version, compare, and audit configurations from Juniper and Huawei devices — with scheduled collection, encrypted credentials, and a full REST API.
| HOSTNAME | IP ADDRESS | MODEL | LOCATION | CONFIGS |
|---|---|---|---|---|
| Dhaka-POP | 172.16.200.131 | S6730-H24X8C | Azimpur POP | 14 |
| CTG-POP | 172.16.200.148 | CE6820-48S6CQ | Badda | 10 |
| KHL-POP | 172.16.200.138 | CE6820-48S6CQ | — | 10 |
| RAJ-POP | 172.16.200.156 | CE6820-48S6CQ | — | 7 |
| BOG-POP | 172.16.200.176 | S6730-H24X8C | — | 5 |
| MYM-POP | 172.16.200.153 | CE8850-32CQ-EI | — | 7 |
| SYL-POP | 172.16.200.159 | CE6820-48S6CQ | — | 7 |
From SSH collection to encrypted storage and diff comparisons — all in one place.
Real-time CPU, RAM, and disk metrics alongside recent collection activity and device health indicators.
Pull configurations from Juniper (JunOS) and Huawei devices over SSH or Telnet — in one unified inventory.
APScheduler runs daily automatic collection at your configured time (default 02:00 Asia/Dhaka). Fire manually anytime.
Unified diff between any two snapshots — same device or cross-device — to instantly spot what changed.
SSH and Telnet passwords are stored using Fernet symmetric encryption — never in plain text.
Three-tier roles — Super Admin, Admin, and Read Only — with granular permission enforcement on every route.
Automate and integrate with JSON endpoints for devices, configs, collection, users, and system stats.
Bulk-import devices from a CSV file with live row preview, or export your full inventory in Excel-compatible format.
Pulls show configuration via SSH from any JunOS-based device — routers, switches, firewalls.
Supports both SSH and Telnet collection from Huawei enterprise switches and routers.
The collection engine is modular — new vendor drivers can be added by implementing the collection interface.
Every action in the portal is available over HTTP. Integrate backups into your CI/CD pipeline, monitoring stack, or custom scripts.
# Trigger manual backup for device 3 curl -X POST \ http://localhost:5000/api/collect/manual/3 \ -b "session=your_session_cookie" # Response { "status": "success", "config_id": 47, "message": "Config saved" }
All SSH and Telnet credentials are encrypted at rest with Fernet symmetric encryption before being written to the database.
User passwords use Werkzeug's PBKDF2-HMAC-SHA256 hashing — never stored in plain text.
Every route and API endpoint enforces role-based access control. Read-only users cannot modify anything — ever.
Flask-Login handles session lifecycle. Unauthenticated requests are always redirected to the login page.
Designed to run behind Nginx with UFW blocking direct access to port 5000. HTTPS via Let's Encrypt is recommended.
The Fernet key is stored outside version control. Losing the key makes encrypted passwords unreadable by design.
| Permission | Super Admin | Admin | Read Only |
|---|---|---|---|
| View dashboard, devices, configs, diff | ✓ | ✓ | ✓ |
| Add / edit / delete devices | ✓ | ✓ | ✗ |
| Import / export devices via CSV | ✓ | ✓ | ✗ |
| Run SSH/Telnet collection | ✓ | ✓ | ✗ |
| View & manage users | ✓ | ✓ | ✗ |
| Manage Super Admin accounts | ✓ | ✗ | ✗ |
Self-hosted, open-source, and runs entirely on your own infrastructure. No cloud account, no vendor lock-in.
Have questions about setup, integration, or custom deployment? Reach out and we'll help you get running.