breaking: rename srs app to rtmp and rebuild migrations from scratch
This commit is contained in:
parent
70713fe02c
commit
92bf7fbf75
|
@ -36,7 +36,7 @@ INSTALLED_APPS = [
|
|||
'django.contrib.sessions',
|
||||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
'srs.apps.SrsConfig',
|
||||
'rtmp.apps.RtmpConfig',
|
||||
'restream.apps.RestreamConfig',
|
||||
]
|
||||
|
||||
|
|
|
@ -18,5 +18,5 @@ from django.urls import include, path
|
|||
|
||||
urlpatterns = [
|
||||
path('admin/', admin.site.urls),
|
||||
path('srs/', include('srs.urls'))
|
||||
path('rtmp/', include('rtmp.urls'))
|
||||
]
|
||||
|
|
|
@ -3,7 +3,7 @@ from .models import RestreamConfig
|
|||
|
||||
|
||||
class RestreamConfigAdmin(admin.ModelAdmin):
|
||||
fields = ['name', 'active', 'streamkey', 'target']
|
||||
fields = ['name', 'active', 'stream', 'target']
|
||||
|
||||
|
||||
admin.site.register(RestreamConfig, RestreamConfigAdmin)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Generated by Django 3.0.5 on 2020-04-13 17:45
|
||||
# Generated by Django 3.0.5 on 2020-04-23 19:04
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
@ -9,7 +9,7 @@ class Migration(migrations.Migration):
|
|||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('srs', '0005_auto_20200413_1745'),
|
||||
('rtmp', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
@ -20,7 +20,7 @@ class Migration(migrations.Migration):
|
|||
('target', models.CharField(max_length=500)),
|
||||
('name', models.CharField(max_length=100)),
|
||||
('active', models.BooleanField()),
|
||||
('streamkey', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='srs.Streamkey')),
|
||||
('stream', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rtmp.Stream')),
|
||||
],
|
||||
),
|
||||
]
|
||||
|
|
|
@ -2,14 +2,14 @@ from django.db import models
|
|||
|
||||
# Create your models here.
|
||||
|
||||
from srs.models import Streamkey
|
||||
from rtmp.models import Stream
|
||||
|
||||
|
||||
class RestreamConfig(models.Model):
|
||||
streamkey = models.ForeignKey(Streamkey, on_delete=models.CASCADE)
|
||||
stream = models.ForeignKey(Stream, on_delete=models.CASCADE)
|
||||
target = models.CharField(max_length=500)
|
||||
name = models.CharField(max_length=100)
|
||||
active = models.BooleanField()
|
||||
|
||||
def __str__(self):
|
||||
return '{} to {}'.format(self.streamkey, self.name)
|
||||
return '{} to {}'.format(self.stream, self.name)
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
import logging
|
||||
|
||||
from django.dispatch import receiver
|
||||
from srs.signals import on_publish, on_unpublish
|
||||
from rtmp.signals import on_publish, on_unpublish
|
||||
|
||||
from portier.celery import app as celery
|
||||
|
||||
from .models import RestreamConfig
|
||||
from srs.models import Streamkey
|
||||
from rtmp.models import Stream
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -20,13 +20,12 @@ def callback_on_unpublish(sender, **kwargs):
|
|||
@receiver(on_publish)
|
||||
def callback_on_publish(sender, **kwargs):
|
||||
logger.info("start publish - {}".format(kwargs['name']))
|
||||
streamkey = Streamkey.objects.get(key=kwargs['streamkey'])
|
||||
configs = RestreamConfig.objects.filter(streamkey=streamkey)
|
||||
stream = Stream.objects.get(key=kwargs['stream'])
|
||||
configs = RestreamConfig.objects.filter(stream=stream)
|
||||
for config in configs:
|
||||
pass
|
||||
celery.send_task('main.start_restream', kwargs={
|
||||
'app': kwargs['app'],
|
||||
'streamkey': kwargs['streamkey'],
|
||||
'stream': kwargs['stream'],
|
||||
'target': config.target,
|
||||
'id': config.id
|
||||
})
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
from django.contrib import admin
|
||||
from .models import Application, Stream
|
||||
|
||||
|
||||
class ApplicationAdmin(admin.ModelAdmin):
|
||||
fields = ['name']
|
||||
|
||||
|
||||
class StreamAdmin(admin.ModelAdmin):
|
||||
fields = ['application', 'stream', 'name']
|
||||
|
||||
|
||||
admin.site.register(Application, ApplicationAdmin)
|
||||
admin.site.register(Stream, StreamAdmin)
|
|
@ -0,0 +1,8 @@
|
|||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class RtmpConfig(AppConfig):
|
||||
name = 'rtmp'
|
||||
|
||||
def ready(self):
|
||||
import rtmp.signals # noqa
|
|
@ -1,8 +1,8 @@
|
|||
# Generated by Django 3.0.5 on 2020-04-13 15:30
|
||||
# Generated by Django 3.0.5 on 2020-04-23 19:04
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
@ -10,7 +10,6 @@ class Migration(migrations.Migration):
|
|||
initial = True
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
@ -18,16 +17,16 @@ class Migration(migrations.Migration):
|
|||
name='Application',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=16)),
|
||||
('name', models.CharField(help_text='rtmp_application_name', max_length=100, unique=True)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Streamkey',
|
||||
name='Stream',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('key', models.CharField(max_length=64)),
|
||||
('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='srs.Application')),
|
||||
('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
('stream', models.CharField(default=uuid.uuid4, max_length=64, unique=True)),
|
||||
('name', models.CharField(max_length=100)),
|
||||
('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rtmp.Application')),
|
||||
],
|
||||
),
|
||||
]
|
|
@ -6,38 +6,32 @@ from . import signals
|
|||
|
||||
|
||||
class Application(models.Model):
|
||||
name = models.CharField(max_length=100, unique=True, help_text=_("srs_application_name"))
|
||||
name = models.CharField(max_length=100, unique=True, help_text=_("rtmp_application_name"))
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Streamkey(models.Model):
|
||||
class Stream(models.Model):
|
||||
application = models.ForeignKey(Application, on_delete=models.CASCADE)
|
||||
key = models.CharField(max_length=64, unique=True, default=uuid.uuid4())
|
||||
stream = models.CharField(max_length=64, unique=True, default=uuid.uuid4)
|
||||
name = models.CharField(max_length=100)
|
||||
|
||||
def on_publish(self, client_ip, client_id, vhost, param):
|
||||
def on_publish(self, param):
|
||||
signals.on_publish.send(sender=self.__class__,
|
||||
name=self.name,
|
||||
streamkey=self.key,
|
||||
stream=self.stream,
|
||||
app=str(self.application),
|
||||
client_ip=client_ip,
|
||||
client_id=client_id,
|
||||
vhost=vhost,
|
||||
param=param
|
||||
)
|
||||
|
||||
def on_unpublish(self, client_ip, client_id, vhost, param):
|
||||
def on_unpublish(self, param):
|
||||
signals.on_unpublish.send(sender=self.__class__,
|
||||
name=self.name,
|
||||
streamkey=self.key,
|
||||
stream=self.stream,
|
||||
app=str(self.application),
|
||||
client_ip=client_ip,
|
||||
client_id=client_id,
|
||||
vhost=vhost,
|
||||
param=param
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return '{}'.format(self.name)
|
||||
return self.name
|
|
@ -0,0 +1,4 @@
|
|||
from django.dispatch import Signal
|
||||
|
||||
on_publish = Signal(providing_args=['application', 'stream', 'params'])
|
||||
on_unpublish = Signal(providing_args=['application', 'stream', 'params'])
|
|
@ -2,5 +2,5 @@ from django.urls import path
|
|||
from . import views
|
||||
|
||||
urlpatterns = [
|
||||
path('callback', views.callback, name='callback'),
|
||||
path('callback/srs', views.callback_srs, name='callback_srs'),
|
||||
]
|
|
@ -11,40 +11,32 @@ logger = logging.getLogger(__name__)
|
|||
|
||||
|
||||
@csrf_exempt
|
||||
def callback(request):
|
||||
def callback_srs(request):
|
||||
if request.method != 'POST':
|
||||
return HttpResponse('1', status=405)
|
||||
|
||||
json_data = json.loads(request.body)
|
||||
try:
|
||||
json_data = json.loads(request.body)
|
||||
except json.decoder.JSONDecodeError:
|
||||
return HttpResponse('1', status=400)
|
||||
|
||||
try:
|
||||
client_ip = json_data['ip']
|
||||
client_id = json_data['client_id']
|
||||
vhost = json_data['vhost']
|
||||
param = json_data['param']
|
||||
app_name = json_data['app']
|
||||
stream_name = json_data['stream']
|
||||
param = json_data['param']
|
||||
except KeyError:
|
||||
return HttpResponse('1', status=401)
|
||||
try:
|
||||
application = models.Application.objects.get(name=app_name)
|
||||
streamkey = models.Streamkey.objects.get(key=stream_name, application=application)
|
||||
stream = models.Stream.objects.get(stream=stream_name, application=application)
|
||||
|
||||
except ObjectDoesNotExist:
|
||||
return HttpResponse('1', status=401)
|
||||
|
||||
if json_data.get('action') == 'on_publish':
|
||||
streamkey.on_publish(client_ip=client_ip,
|
||||
client_id=client_id,
|
||||
vhost=vhost,
|
||||
param=param
|
||||
)
|
||||
stream.on_publish(param=param)
|
||||
|
||||
if json_data.get('action') == 'on_unpublish':
|
||||
streamkey.on_unpublish(client_ip=client_ip,
|
||||
client_id=client_id,
|
||||
vhost=vhost,
|
||||
param=param
|
||||
)
|
||||
stream.on_unpublish(param=param)
|
||||
|
||||
return HttpResponse('0')
|
14
srs/admin.py
14
srs/admin.py
|
@ -1,14 +0,0 @@
|
|||
from django.contrib import admin
|
||||
from .models import Application, Streamkey
|
||||
|
||||
|
||||
class ApplicationAdmin(admin.ModelAdmin):
|
||||
fields = ['name']
|
||||
|
||||
|
||||
class StreamkeyAdmin(admin.ModelAdmin):
|
||||
fields = ['application', 'key', 'name']
|
||||
|
||||
|
||||
admin.site.register(Application, ApplicationAdmin)
|
||||
admin.site.register(Streamkey, StreamkeyAdmin)
|
|
@ -1,8 +0,0 @@
|
|||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class SrsConfig(AppConfig):
|
||||
name = 'srs'
|
||||
|
||||
def ready(self):
|
||||
import srs.signals # noqa
|
|
@ -1,19 +0,0 @@
|
|||
# Generated by Django 3.0.5 on 2020-04-13 15:40
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('srs', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='streamkey',
|
||||
name='name',
|
||||
field=models.CharField(default='', max_length=16),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
|
@ -1,17 +0,0 @@
|
|||
# Generated by Django 3.0.5 on 2020-04-13 17:21
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('srs', '0002_streamkey_name'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='streamkey',
|
||||
name='owner',
|
||||
),
|
||||
]
|
|
@ -1,28 +0,0 @@
|
|||
# Generated by Django 3.0.5 on 2020-04-13 17:36
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('srs', '0003_remove_streamkey_owner'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='application',
|
||||
name='name',
|
||||
field=models.CharField(max_length=100, unique=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='streamkey',
|
||||
name='key',
|
||||
field=models.CharField(max_length=64, unique=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='streamkey',
|
||||
name='name',
|
||||
field=models.CharField(max_length=100),
|
||||
),
|
||||
]
|
|
@ -1,20 +0,0 @@
|
|||
# Generated by Django 3.0.5 on 2020-04-13 17:45
|
||||
|
||||
from django.db import migrations, models
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('srs', '0004_auto_20200413_1736'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='streamkey',
|
||||
name='key',
|
||||
field=models.CharField(default=uuid.UUID('b5777854-4533-49dc-b38d-69738d8844d6'),
|
||||
max_length=64, unique=True),
|
||||
),
|
||||
]
|
|
@ -1,4 +0,0 @@
|
|||
from django.dispatch import Signal
|
||||
|
||||
on_publish = Signal(providing_args=['application', 'streamkey', 'node'])
|
||||
on_unpublish = Signal(providing_args=['application', 'streamkey', 'node'])
|
Loading…
Reference in New Issue