]> git.parisson.com Git - teleforma.git/commitdiff
adapt streaming models and views to handle SSL streaming through Nginx
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Wed, 7 Jul 2021 15:00:41 +0000 (17:00 +0200)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Wed, 7 Jul 2021 15:00:41 +0000 (17:00 +0200)
app/settings.py
teleforma/models/core.py
teleforma/templates/teleforma/course_conference.html
teleforma/views/core.py

index fb15be0365c0ca518248bfbb50b84a0d109517a7..3a7a313bfc31a0b3f75b23c5aee8de7ad2bdd56e 100644 (file)
@@ -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",
index 8e67a61137a30bbaccd58c08389f7c29c327be80..7ad3b858ab58b148642d6b1e843271df0fd20332 100755 (executable)
@@ -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:
index 71eabedbd42af22bf073ae2c6bd2803d47c488c3..b22499fa2489890211ad520be4a0867d1bd7eb90 100644 (file)
@@ -82,7 +82,7 @@
                     height="auto"
                     data-setup="{}">
 
-                  <source id="videosource" src="{{ livestream.url|get_host:host }}" type="video/webm" />
+                  <source id="videosource" src="{{ livestream.url }}" type="video/webm" />
                     <p class="vjs-no-js">
                       To view this video please enable JavaScript, and consider upgrading to a
                       web browser that
index d50ba776eb20d9198298584fdd0458f5130d363a..6233c181de07df329453c630fe5193439e21941e 100644 (file)
@@ -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()