A comprehensive web application for managing network devices, multicast usage, IP allocations, and switch port configurations across company facilities.
- Branch Management: Organize network infrastructure by company branches/facilities
- Switch Management: Track network switches with detailed port configurations
- Device Management: Manage connected devices with automatic IP and port allocation
- Port Management: Support for 10G, 25G, 50G, and 100G ports with breakout capabilities
- IP Address Management: Automatic allocation and tracking of multicast and unicast IPs
- User Management: Role-based access control with local and LDAP authentication
- Port Breakout: Break 100G ports into 4x25G ports dynamically
- Automatic Allocation: Smart IP and port assignment for new devices
- LDAP Integration: Azure Entra ID authentication support
- Role-Based Access: Admin, Manager, Operator, and Viewer roles
- Real-time Dashboard: Overview of network utilization and recent activities
- Future API Ready: Structure prepared for switch API integration
- Framework: Flask with SQLAlchemy ORM
- Database: PostgreSQL (SQLite for development)
- Authentication: JWT tokens with LDAP/Local support
- API: RESTful API with comprehensive endpoints
- Framework: React 18 with Material-UI
- State Management: React Query for server state
- Routing: React Router v6
- Styling: Material-UI with custom theming
- Python 3.8+
- Node.js 16+
- PostgreSQL (optional, SQLite works for development)
-
Install Dependencies
pip install -r requirements.txt
-
Configure Environment
cp config.env.example .env # Edit .env with your configuration -
Initialize Database
python init_db.py
-
Start Backend Server
python app.py
-
Install Dependencies
npm install
-
Start Development Server
npm start
-
Access Application
- Open http://localhost:3000
- Backend API: http://localhost:5000
The application comes with sample users for testing:
- Admin:
admin/admin123 - Manager:
manager/manager123 - Operator:
operator/operator123 - Viewer:
viewer/viewer123
- Full system access
- User management
- System configuration
- All CRUD operations
- Branch and switch management
- Advanced device operations
- IP allocation oversight
- Team member management
- Device management
- Port configuration
- Basic IP allocation
- Daily operations
- Read-only access
- Dashboard viewing
- Report generation
- Status monitoring
POST /auth/login- User authenticationGET /auth/me- Current user infoPOST /auth/logout- User logout
GET /api/branches- List branchesPOST /api/branches- Create branchGET /api/branches/{id}- Get branch detailsPUT /api/branches/{id}- Update branchDELETE /api/branches/{id}- Delete branch
GET /api/branches/{id}/switches- List switches in branchPOST /api/switches- Create switchGET /api/switches/{id}- Get switch detailsPUT /api/switches/{id}- Update switchDELETE /api/switches/{id}- Delete switch
GET /api/devices- List devices (with filters)POST /api/devices- Create device with auto-allocationGET /api/devices/{id}- Get device detailsPUT /api/devices/{id}- Update deviceDELETE /api/devices/{id}- Delete device
GET /api/switches/{id}/ports- List portsPOST /api/ports/{id}/breakout- Breakout 100G portPOST /api/ports/{id}/restore- Restore breakout port
GET /api/branches/{id}/ips- List IP allocationsGET /api/branches/{id}/ports- List all ports in branch
- users: User accounts and authentication
- branches: Company facilities/locations
- switches: Network switches in branches
- switch_ports: Individual switch ports
- devices: Connected network devices
- device_ips: IP addresses assigned to devices
- device_connections: Device-to-port connections
- ip_allocations: IP address allocation tracking
# Flask Configuration
SECRET_KEY=your-secret-key
DATABASE_URL=postgresql://user:pass@localhost/multicaster
# LDAP Configuration (Azure Entra ID)
LDAP_SERVER=ldaps://your-domain.onmicrosoft.com
LDAP_BASE_DN=DC=your-domain,DC=onmicrosoft,DC=com
LDAP_BIND_DN=CN=bind-user,OU=Users,DC=your-domain,DC=onmicrosoft,DC=com
LDAP_BIND_PASSWORD=bind-password
# JWT Configuration
JWT_SECRET_KEY=your-jwt-secret
JWT_ACCESS_TOKEN_EXPIRES=3600- Update database models in
models.py - Create API endpoints in
api.py - Add frontend components in
src/components/ - Update routing in
src/App.js
flask db init
flask db migrate -m "Description"
flask db upgrade- Switch API Integration: Direct communication with managed switches
- Real-time Monitoring: Live port status and device health
- Network Topology: Visual network mapping
- Automated Discovery: Auto-detection of devices and connections
- Performance Analytics: Network utilization trends
- Alert System: Notifications for issues and thresholds
The application is designed to support future integration with switch APIs:
- Centralized API credentials management
- Async job processing for bulk operations
- Real-time data synchronization
- Health monitoring and alerting
For issues and feature requests, please refer to the application documentation or contact your system administrator.
Internal company use only. All rights reserved.