Skip to content

nicolasumaras/Multicaster

Repository files navigation

Multicaster - Network Device & Multicast Management System

A comprehensive web application for managing network devices, multicast usage, IP allocations, and switch port configurations across company facilities.

Features

Core Functionality

  • 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

Advanced Features

  • 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

Architecture

Backend (Flask)

  • Framework: Flask with SQLAlchemy ORM
  • Database: PostgreSQL (SQLite for development)
  • Authentication: JWT tokens with LDAP/Local support
  • API: RESTful API with comprehensive endpoints

Frontend (React)

  • Framework: React 18 with Material-UI
  • State Management: React Query for server state
  • Routing: React Router v6
  • Styling: Material-UI with custom theming

Quick Start

Prerequisites

  • Python 3.8+
  • Node.js 16+
  • PostgreSQL (optional, SQLite works for development)

Backend Setup

  1. Install Dependencies

    pip install -r requirements.txt
  2. Configure Environment

    cp config.env.example .env
    # Edit .env with your configuration
  3. Initialize Database

    python init_db.py
  4. Start Backend Server

    python app.py

Frontend Setup

  1. Install Dependencies

    npm install
  2. Start Development Server

    npm start
  3. Access Application

Default Credentials

The application comes with sample users for testing:

  • Admin: admin / admin123
  • Manager: manager / manager123
  • Operator: operator / operator123
  • Viewer: viewer / viewer123

User Roles

Admin

  • Full system access
  • User management
  • System configuration
  • All CRUD operations

Manager

  • Branch and switch management
  • Advanced device operations
  • IP allocation oversight
  • Team member management

Operator

  • Device management
  • Port configuration
  • Basic IP allocation
  • Daily operations

Viewer

  • Read-only access
  • Dashboard viewing
  • Report generation
  • Status monitoring

API Endpoints

Authentication

  • POST /auth/login - User authentication
  • GET /auth/me - Current user info
  • POST /auth/logout - User logout

Branches

  • GET /api/branches - List branches
  • POST /api/branches - Create branch
  • GET /api/branches/{id} - Get branch details
  • PUT /api/branches/{id} - Update branch
  • DELETE /api/branches/{id} - Delete branch

Switches

  • GET /api/branches/{id}/switches - List switches in branch
  • POST /api/switches - Create switch
  • GET /api/switches/{id} - Get switch details
  • PUT /api/switches/{id} - Update switch
  • DELETE /api/switches/{id} - Delete switch

Devices

  • GET /api/devices - List devices (with filters)
  • POST /api/devices - Create device with auto-allocation
  • GET /api/devices/{id} - Get device details
  • PUT /api/devices/{id} - Update device
  • DELETE /api/devices/{id} - Delete device

Ports

  • GET /api/switches/{id}/ports - List ports
  • POST /api/ports/{id}/breakout - Breakout 100G port
  • POST /api/ports/{id}/restore - Restore breakout port

IP Management

  • GET /api/branches/{id}/ips - List IP allocations
  • GET /api/branches/{id}/ports - List all ports in branch

Database Schema

Key Tables

  • 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

Configuration

Environment Variables

# 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

Development

Adding New Features

  1. Update database models in models.py
  2. Create API endpoints in api.py
  3. Add frontend components in src/components/
  4. Update routing in src/App.js

Database Migrations

flask db init
flask db migrate -m "Description"
flask db upgrade

Future Enhancements

Planned Features

  • 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

API Integration Structure

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

Support

For issues and feature requests, please refer to the application documentation or contact your system administrator.

License

Internal company use only. All rights reserved.

About

An utility to manage multicasts and switch ports across 2110 Media Networks

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors