Proyecto LCX Dispatcharr multicuenta
Base Image Build / prepare (push) Has been cancelled
Build and Push Multi-Arch Docker Image / build-and-push (push) Has been cancelled
Frontend Tests / test (push) Has been cancelled
Base Image Build / docker (amd64, ubuntu-24.04) (push) Has been cancelled
Base Image Build / docker (arm64, ubuntu-24.04-arm) (push) Has been cancelled
Base Image Build / create-manifest (push) Has been cancelled
Base Image Build / prepare (push) Has been cancelled
Build and Push Multi-Arch Docker Image / build-and-push (push) Has been cancelled
Frontend Tests / test (push) Has been cancelled
Base Image Build / docker (amd64, ubuntu-24.04) (push) Has been cancelled
Base Image Build / docker (arm64, ubuntu-24.04-arm) (push) Has been cancelled
Base Image Build / create-manifest (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.apps import apps
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Manage proxy servers'
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument(
|
||||
'action',
|
||||
choices=['start', 'stop', 'restart'],
|
||||
help='Action to perform'
|
||||
)
|
||||
parser.add_argument(
|
||||
'--type',
|
||||
choices=['hls', 'ts', 'all'],
|
||||
default='all',
|
||||
help='Type of proxy to manage'
|
||||
)
|
||||
parser.add_argument(
|
||||
'--channel',
|
||||
help='Channel ID to manage'
|
||||
)
|
||||
parser.add_argument(
|
||||
'--url',
|
||||
help='Stream URL (required for start)'
|
||||
)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
proxy_app = apps.get_app_config('proxy')
|
||||
action = options['action']
|
||||
proxy_type = options['type']
|
||||
channel = options.get('channel')
|
||||
url = options.get('url')
|
||||
|
||||
try:
|
||||
if action == 'start':
|
||||
if not url:
|
||||
raise ValueError("URL is required for start action")
|
||||
if proxy_type in ('hls', 'all'):
|
||||
proxy_app.hls_proxy.initialize_channel(url, channel or 'default')
|
||||
if proxy_type in ('ts', 'all'):
|
||||
proxy_app.ts_proxy.initialize_channel(url, channel or 'default')
|
||||
self.stdout.write(self.style.SUCCESS('Started proxy servers'))
|
||||
|
||||
elif action == 'stop':
|
||||
if proxy_type in ('hls', 'all'):
|
||||
if channel:
|
||||
proxy_app.hls_proxy.stop_channel(channel)
|
||||
else:
|
||||
proxy_app.hls_proxy.shutdown()
|
||||
if proxy_type in ('ts', 'all'):
|
||||
if channel:
|
||||
proxy_app.ts_proxy.stop_channel(channel)
|
||||
else:
|
||||
proxy_app.ts_proxy.shutdown()
|
||||
self.stdout.write(self.style.SUCCESS('Stopped proxy servers'))
|
||||
|
||||
elif action == 'restart':
|
||||
self.handle(*args, **dict(options, action='stop'))
|
||||
self.handle(*args, **dict(options, action='start'))
|
||||
self.stdout.write(self.style.SUCCESS('Restarted proxy servers'))
|
||||
|
||||
except Exception as e:
|
||||
self.stderr.write(self.style.ERROR(f'Error: {e}'))
|
||||
Reference in New Issue
Block a user