mirror of
https://github.com/Dispatcharr/Dispatcharr.git
synced 2026-01-23 10:45:27 +00:00
System Event Logging: - Add SystemEvent model with 15 event types tracking channel operations, client connections, M3U/EPG activities, and buffering events - Log detailed metrics for M3U/EPG refresh operations (streams/programs created/updated/deleted) - Track M3U/EPG downloads with client information (IP address, user agent, profile, channel count) - Record channel lifecycle events (start, stop, reconnect) with stream and client details - Monitor client connections/disconnections and buffering events with stream metadata Event Viewer UI: - Add SystemEvents component with real-time updates via WebSocket - Implement pagination, filtering by event type, and configurable auto-refresh - Display events with color-coded badges and type-specific icons - Integrate event viewer into Stats page with modal display - Add event management settings (retention period, refresh rate) M3U/EPG Endpoint Optimizations: - Implement content caching with 5-minute TTL to reduce duplicate processing - Add client-based event deduplication (2-second window) using IP and user agent hashing - Support HEAD requests for efficient preflight checks - Cache streamed EPG responses while maintaining streaming behavior for first request
27 lines
944 B
Python
27 lines
944 B
Python
# core/api_urls.py
|
|
|
|
from django.urls import path, include
|
|
from rest_framework.routers import DefaultRouter
|
|
from .api_views import (
|
|
UserAgentViewSet,
|
|
StreamProfileViewSet,
|
|
CoreSettingsViewSet,
|
|
environment,
|
|
version,
|
|
rehash_streams_endpoint,
|
|
TimezoneListView,
|
|
get_system_events
|
|
)
|
|
|
|
router = DefaultRouter()
|
|
router.register(r'useragents', UserAgentViewSet, basename='useragent')
|
|
router.register(r'streamprofiles', StreamProfileViewSet, basename='streamprofile')
|
|
router.register(r'settings', CoreSettingsViewSet, basename='coresettings')
|
|
urlpatterns = [
|
|
path('settings/env/', environment, name='token_refresh'),
|
|
path('version/', version, name='version'),
|
|
path('rehash-streams/', rehash_streams_endpoint, name='rehash_streams'),
|
|
path('timezones/', TimezoneListView.as_view(), name='timezones'),
|
|
path('system-events/', get_system_events, name='system_events'),
|
|
path('', include(router.urls)),
|
|
]
|