From ee7f1c897a8a9c85f537180c825a96ded8d637ef Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Wed, 7 Jul 2021 17:00:41 +0200 Subject: [PATCH] adapt streaming models and views to handle SSL streaming through Nginx --- app/settings.py | 48 +++++-------------- teleforma/models/core.py | 12 +++-- .../teleforma/course_conference.html | 2 +- teleforma/views/core.py | 21 ++++---- 4 files changed, 32 insertions(+), 51 deletions(-) diff --git a/app/settings.py b/app/settings.py index fb15be03..3a7a313b 100644 --- a/app/settings.py +++ b/app/settings.py @@ -30,6 +30,11 @@ ADMINS = ( MANAGERS = ADMINS +ALLOWED_HOSTS = ['localhost', 'crfpa.dockdev.pilotsystems.net', + 'staging.docker.e-learning.crfpa.pre-barreau.parisson.com', + 'e-learning.crfpa.pre-barreau.com', +] + ASGI_APPLICATION = "teleforma.ws.routing.application" REDIS_HOST = "redis" @@ -165,24 +170,12 @@ INSTALLED_APPS = ( 'teleforma.exam', 'jsonrpc', 'sorl.thumbnail', - # 'django_extensions', 'dj_pagination', 'postman', - # 'timezones', - # 'googletools', - # 'extra_views', 'captcha', 'django_nvd3', - # 'bootstrap3', - # 'bootstrap_pagination', - # 'django_user_agents', 'tinymce', - # 'multichoice', - # 'true_false', - # 'essay', - # 'quiz', 'pdfannotator', - # 'telemeta', 'rest_framework', 'rest_framework.authtoken', ) @@ -215,21 +208,6 @@ TEMPLATES = [ DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' -TELEMETA_ORGANIZATION = 'Pré-Barreau - CRFPA' -TELEMETA_SUBJECTS = ('Barreau', 'CRFPA', 'e-learning') -TELEMETA_DESCRIPTION = "E-learning Pré-Barreau - CRFPA" -TELEMETA_GMAP_KEY = 'ABQIAAAArg7eSfnfTkBRma8glnGrlxRVbMrhnNNvToCbZQtWdaMbZTA_3RRGObu5PDoiBImgalVnnLU2yN4RMA' -TELEMETA_CACHE_DIR = MEDIA_ROOT + 'cache' -TELEMETA_EXPORT_CACHE_DIR = TELEMETA_CACHE_DIR + "/export" -TELEMETA_DATA_CACHE_DIR = TELEMETA_CACHE_DIR + "/data" - -TELEMETA_DOWNLOAD_ENABLED = True -TELEMETA_STREAMING_FORMATS = ('mp3', 'webm') -TELEMETA_DOWNLOAD_FORMATS = ('wav', 'mp3', 'webm') -TELEMETA_PUBLIC_ACCESS_PERIOD = 51 -TELEMETA_DEFAULT_GRAPHER_SIZES = ['360x130', '640x130'] -TELEMETA_DEFAULT_GRAPHER_ID = 'waveform_contour_wh' - AUTH_PROFILE_MODULE = 'telemeta.userprofile' LOGIN_URL = '/login/' LOGIN_REDIRECT_URL = reverse_lazy('teleforma-desk') @@ -241,8 +219,6 @@ EMAIL_SUBJECT_PREFIX = '[' + TELEMETA_ORGANIZATION + '] ' #if DEBUG: # EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' - - POSTMAN_AUTO_MODERATE_AS = True POSTMAN_DISALLOW_ANONYMOUS = True @@ -262,10 +238,13 @@ TELEFORMA_EXAM_MAX_SESSIONS = 15 TELEFORMA_EXAM_SCRIPT_MAX_SIZE = 20480000 TELEFORMA_EXAM_SCRIPT_SERVICE_URL = '/webviewer/teleforma.html' -TELECASTER_LIVE_STREAMING_SERVER = 'stream4.parisson.com' +TELECASTER_LIVE_STREAMING_PROTOCOL = 'https' +TELECASTER_LIVE_STREAMING_SERVER = 'stream7.parisson.com' TELECASTER_LIVE_STREAMING_PORT = 443 -TELECASTER_LIVE_ICECAST_STREAMING_PORT = 8000 -TELECASTER_LIVE_STREAM_M_STREAMING_PORT = 8080 +TELECASTER_LIVE_ICECAST_STREAMING_PORT = 443 +TELECASTER_LIVE_ICECAST_STREAMING_PATH = '/stream/audio/' +TELECASTER_LIVE_STREAM_M_STREAMING_PORT = 443 +TELECASTER_LIVE_STREAM_M_STREAMING_PATH = '/stream/video/' PASSWORD_HASHERS = [ 'django.contrib.auth.hashers.PBKDF2PasswordHasher', @@ -373,11 +352,6 @@ POSTMAN_SHOW_USER_AS = show_user_as #THUMBNAIL_FORCE_OVERWRITE = True -ALLOWED_HOSTS = ['localhost', 'crfpa.dockdev.pilotsystems.net', - 'staging.docker.e-learning.crfpa.pre-barreau.parisson.com', - 'e-learning.crfpa.pre-barreau.com', -] - JAZZMIN_SETTINGS = { "site_title": "CRFPA", "site_header": "CRFPA", diff --git a/teleforma/models/core.py b/teleforma/models/core.py index 8e67a611..7ad3b858 100755 --- a/teleforma/models/core.py +++ b/teleforma/models/core.py @@ -532,8 +532,10 @@ class StreamingServer(models.Model): element_type = 'streamingserver' + protocol = models.CharField(_('protocol'), max_length=16, blank=True) host = models.CharField(_('host'), max_length=255) port = models.CharField(_('port'), max_length=32) + path = models.CharField(_('path'), max_length=256, blank=True) type = models.CharField(_('type'), choices=server_choices, max_length=32) description = models.CharField( _('description'), max_length=255, blank=True) @@ -542,7 +544,7 @@ class StreamingServer(models.Model): _('admin password'), max_length=32, blank=True) def __str__(self): - return self.host + ':' + self.port + ' - ' + self.type + return self.protocol + '://' + self.host + ':' + self.port + self.path + ' - ' + self.type class Meta(MetaCore): db_table = app_label + '_' + 'streaming_server' @@ -567,7 +569,7 @@ class LiveStream(models.Model): if self.conference: return self.conference.slug else: - return self.server.host + self.server.port + return 'None' @property def mount_point(self): @@ -583,13 +585,15 @@ class LiveStream(models.Model): def snapshot_url(self): url = '' if self.server.type == 'stream-m': - url = 'http://' + self.server.host + ':' + self.server.port + \ + url = self.server.protocol + '://' + self.server.host + ':' + \ + + self.server.port + self.server.path + \ '/snapshot/' + self.slug return url @property def url(self): - return 'http://' + self.server.host + ':' + self.server.port + '/' + self.mount_point + return self.server.protocol + '://' + self.server.host + ':' + self.server.port + \ + self.server.path + self.mount_point def __str__(self): if self.conference: diff --git a/teleforma/templates/teleforma/course_conference.html b/teleforma/templates/teleforma/course_conference.html index 71eabedb..b22499fa 100644 --- a/teleforma/templates/teleforma/course_conference.html +++ b/teleforma/templates/teleforma/course_conference.html @@ -82,7 +82,7 @@ height="auto" data-setup="{}"> - +

To view this video please enable JavaScript, and consider upgrading to a web browser that diff --git a/teleforma/views/core.py b/teleforma/views/core.py index d50ba776..6233c181 100644 --- a/teleforma/views/core.py +++ b/teleforma/views/core.py @@ -754,20 +754,23 @@ class ConferenceView(CourseAccessMixin, DetailView): conference.save() if conference.streaming: for stream in conf_dict['streams']: - host = getattr( - settings, "TELECASTER_LIVE_STREAMING_SERVER", stream['host']) + host = getattr(settings, "TELECASTER_LIVE_STREAMING_SERVER", stream['host']) + protocol = getattr(settings, "TELECASTER_LIVE_STREAMING_PROTOCOL", 'http') server_type = stream['server_type'] stream_type = stream['stream_type'] if server_type == 'icecast': - port = getattr( - settings, "TELECASTER_LIVE_ICECAST_STREAMING_PORT", stream['port']) + port = getattr(settings, "TELECASTER_LIVE_ICECAST_STREAMING_PORT", '8000') + path = getattr(settings, "TELECASTER_LIVE_ICECAST_STREAMING_PATH", '/') elif server_type == 'stream-m': - port = getattr( - settings, "TELECASTER_LIVE_STREAM_M_STREAMING_PORT", stream['port']) + port = getattr(settings, "TELECASTER_LIVE_STREAM_M_STREAMING_PORT", '8080') + path = getattr(settings, "TELECASTER_LIVE_STREAM_M_STREAMING_PATH", '/') #site = Site.objects.all()[0] - server, c = StreamingServer.objects.get_or_create(host=host, - port=port, - type=server_type) + server, c = StreamingServer.objects.get_or_create( + protocol=protocol, + host=host, + port=port, + path=path, + type=server_type) stream = LiveStream(conference=conference, server=server, stream_type=stream_type, streaming=True) stream.save() -- 2.39.5