Skip to content

Main merge for 1.2.6 release #252

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 41 commits into from
May 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
206ee3c
Version bump and disabled automatic action for JOSS paper draft
SBriere Mar 5, 2024
23894d5
Merge branch 'dev' of https://github.com/introlab/opentera into dev
SBriere Mar 5, 2024
e69cd12
Merged conf.py version bump
SBriere Mar 5, 2024
39be813
Merge branch 'main' of https://github.com/introlab/opentera into dev
SBriere Mar 5, 2024
4b38dde
Refs #244. VideoRehab - Added "play", "pause" and "stop" features to …
SBriere Apr 2, 2024
f9ad6ee
Refs #233. VideoRehab - Added first implementation of manual counter …
SBriere Apr 2, 2024
ebf5ad2
Refs #248. Upgrade script to add asset_expiration_datetime to t_assets.
doumdi Apr 3, 2024
c9eceba
Updated test for asset_expiration_datetime
doumdi Apr 3, 2024
6940293
Refs #248 First attempt, unfinished.
doumdi Apr 4, 2024
f1c8536
Merge branch 'main' of github.com:introlab/opentera into dev
doumdi Apr 9, 2024
5b8816b
Refs #248, Starting worker, not usable yet.
doumdi Apr 10, 2024
45d22cb
Merge branch 'dev' of https://github.com/introlab/opentera into dev
doumdi Apr 10, 2024
c19f983
Refs #248 Avoid having database access in worker.
doumdi Apr 10, 2024
78139fe
Refs #248 First version of archives in DB. Not working yet.
doumdi Apr 10, 2024
bf73b97
Refs #248 Creating archive info, need to upload next.
doumdi Apr 11, 2024
75a7bac
Refs #248, working file archive upload from worker.
doumdi Apr 11, 2024
b55cde4
Refs #248 Return code.
doumdi Apr 11, 2024
440d11d
Refs #248, Fix typo in project name
doumdi Apr 11, 2024
44ba95d
Refs #232. Removed camera preinit as it was causing issues on iOS dev…
SBriere Apr 15, 2024
2642ec2
Refs #248 managing archive events.
doumdi Apr 16, 2024
68b8343
Refs #248 Archive events sent to users, participants and devices. Wil…
doumdi Apr 16, 2024
9ff0307
Added device_type and device_subtype name in DeviceLogin reply
SBriere Apr 17, 2024
8d4b2b6
Added device_type and device_subtype name in DeviceLogin reply
SBriere Apr 17, 2024
2b45150
Merge branch 'dev' of https://github.com/introlab/opentera into dev
SBriere Apr 17, 2024
083af5f
Refs #249. Replaced "random" library for token generation with "secre…
SBriere Apr 22, 2024
4b7ab99
Refs #250. Limited port ranges in url mapping in nginx
SBriere Apr 22, 2024
8579d4c
Refs #250. Cleaned up nginx config by removing external services config.
SBriere Apr 22, 2024
a10ffd6
Refs #248, using host from DB
doumdi Apr 22, 2024
e9b1f84
Refs #248, using host from DB
doumdi Apr 22, 2024
a2b8ef9
Refs #248, using host from DB
doumdi Apr 22, 2024
d73391f
Refs #248. Sending relative url in ArchiveEvent
SBriere Apr 23, 2024
e94f0d0
changed date
doumdi Apr 24, 2024
9ad684e
Refs #248, Archive cleanup
doumdi Apr 24, 2024
2f3b0a7
Refs #248, Archive cleanup
doumdi Apr 24, 2024
2a9d5bb
Refs #248, Add automatic expiration datetime in 30 days.
doumdi Apr 24, 2024
5f38132
Refs #248, Make sure to include timezone.
doumdi Apr 24, 2024
4461106
Refs #248, Add download archive to log.
doumdi Apr 24, 2024
3bdf6bd
Refs #248, Fix to every hour.
doumdi Apr 24, 2024
89499c1
Refs #248, Monitor process with thread, add logging events
doumdi Apr 24, 2024
a2d94a3
Refs #248. Changed zip file structure and file names
SBriere Apr 29, 2024
d61f414
Allowed devices to list the assets for a specific session
SBriere May 10, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .github/workflows/draft-joss-paper-pdf.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
name: JOSS Paper Draft PDF

on:
push:
branches: [main, joss-paper-review]
workflow_dispatch:
branches: [main, joss-paper-review]

Expand Down
143 changes: 2 additions & 141 deletions docker/dev/nginx/opentera.conf
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@


location / {
proxy_pass http://opentera-server:4040;
proxy_set_header X-ExternalPort $server_port;
Expand Down Expand Up @@ -54,36 +52,6 @@ location /file/ {
proxy_set_header X-Script-Name /file;
}


location /bureau/ {
proxy_pass http://opentera-server:4050/;
proxy_redirect http://$host/ https://$host:$server_port/;
proxy_set_header X-ExternalPort $server_port;
proxy_set_header X-ExternalHost $host;
proxy_set_header X_ExternalServer $server_name;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Script-Name /bureau;
}

location /dance/ {
client_max_body_size 2G;
proxy_pass http://opentera-server:4060/;
proxy_redirect http://$host/ https://$host:$server_port/;
proxy_set_header X-ExternalPort $server_port;
proxy_set_header X-ExternalHost $host;
proxy_set_header X_ExternalServer $server_name;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Script-Name /dance;
}

location /rehab/ {
proxy_pass http://opentera-server:4070/;
proxy_redirect http://$host/ https://$host:$server_port/;
Expand All @@ -98,48 +66,6 @@ location /rehab/ {
proxy_set_header X-Script-Name /rehab;
}

location /robot/ {
proxy_pass http://opentera-server:4080/;
proxy_redirect http://$host/ https://$host:$server_port/;
proxy_set_header X-ExternalPort $server_port;
proxy_set_header X-ExternalHost $host;
proxy_set_header X_ExternalServer $server_name;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Script-Name /robot;
}

location /webportal/ {
proxy_pass http://opentera-server:4090/;
proxy_redirect http://$host/ https://$host:$server_port/;
proxy_set_header X-ExternalPort $server_port;
proxy_set_header X-ExternalHost $host;
proxy_set_header X_ExternalServer $server_name;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Script-Name /webportal;
}

location /room/ {
proxy_pass http://opentera-server:5000/;
proxy_redirect http://$host/ https://$host:$server_port/;
proxy_set_header X-ExternalPort $server_port;
proxy_set_header X-ExternalHost $host;
proxy_set_header X_ExternalServer $server_name;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Script-Name /room;
}

location /example/ {
proxy_pass http://opentera-server:5010/;
proxy_redirect http://$host/ https://$host:$server_port/;
Expand All @@ -157,7 +83,7 @@ location /example/ {
########################################################################################################################
# webrtc on port xxxx
########################################################################################################################
location ~ ^/webrtc/([0-9]+)/(.*)$ {
location ~ ^/webrtc/(808\d|809\d|81[0-2]\d|8130)/(.*)$ {
resolver 127.0.0.11;
proxy_pass http://opentera-server:$1/$2$is_args$args;
proxy_set_header X-ExternalPort $server_port;
Expand All @@ -171,75 +97,10 @@ location ~ ^/webrtc/([0-9]+)/(.*)$ {
proxy_set_header X-Script-Name /webrtc/;
}

location ~ ^/webrtc_dance/([0-9]+)/(.*)$ {
resolver 127.0.0.11;
proxy_pass http://opentera-server:$1/$2$is_args$args;
proxy_set_header X-ExternalPort $server_port;
proxy_set_header X-ExternalHost $host;
proxy_set_header X_ExternalServer $server_name;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Script-Name /webrtc_dance/;

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

location ~ ^/websocket/([0-9]+)/(.*)$ {
location ~ ^/websocket/(808\d|809\d|81[0-2]\d|8130)/(.*)$ {
resolver 127.0.0.11;
proxy_pass http://opentera-server:$1/websocket/$1/$2$is_args$args;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
########################################################################################################################

########################################################################################################################
# webrtc_teleop on port defined in url tilda means will have regexp,
########################################################################################################################
location ~ ^/webrtc_teleop/.*$ {

# Here is a tool to help you debug these regular expressions https://regex101.com/
# The order of these rewrites are important!

# Handle request ending with js/*.js or css css/*.css (Styles and scripts files in static folder)
rewrite ^/webrtc_teleop/([0-9]+)/.*((?>js|css)/.*\.(?>css|js|map))$ /signaling_server/$1/$2 last;

# Handle request for /iceservers
rewrite ^/webrtc_teleop/([0-9]+)/iceservers$ /signaling_server/$1/iceservers last;

# Handle request for /socket.io
rewrite ^/webrtc_teleop/([0-9]+)/socket.io(.*)$ /signaling_server/$1/socket.io$2 last;

# Handle request with no index.html and not ending with .css or .js (Application's router)
rewrite ^/webrtc_teleop/([0-9]+)/((?!index.html).*(?<!\.css|\.js))$ /signaling_server/$1/index.html last;

# Redirection to the proxy
rewrite ^/webrtc_teleop/(.*)$ /signaling_server/$1$is_args$args last;

# No request has matched, Forbiden
return 403;
}

location ~ ^/signaling_server/(.*)$ {
proxy_pass http://opentera-server:$1$is_args$args;
proxy_set_header X-ExternalPort $server_port;
proxy_set_header X-ExternalHost $host;
proxy_set_header X_ExternalServer $server_name;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Scheme $scheme;
# proxy_set_header X-Script-Name /webrtc_teleop/;

# Websocket upgrades
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

5 changes: 3 additions & 2 deletions docker/prod/nginx/opentera.conf
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ location /rehab/ {
########################################################################################################################
# webrtc on port xxxx
########################################################################################################################
location ~ ^/webrtc/([0-9]+)/(.*)$ {
# Range from 8080 to 8130
location ~ ^/webrtc/(808\d|809\d|81[0-2]\d|8130)/(.*)$ {
resolver 127.0.0.11;
proxy_pass http://opentera-server:$1/$2$is_args$args;
proxy_set_header X-ExternalPort $server_port;
Expand All @@ -88,7 +89,7 @@ location ~ ^/webrtc/([0-9]+)/(.*)$ {
proxy_set_header X-Script-Name /webrtc/;
}

location ~ ^/websocket/([0-9]+)/(.*)$ {
location ~ ^/websocket/(808\d|809\d|81[0-2]\d|8130)/(.*)$ {
resolver 127.0.0.11;
proxy_pass http://opentera-server:$1/websocket/$1/$2$is_args$args;
proxy_http_version 1.1;
Expand Down
2 changes: 1 addition & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
project = 'OpenTera'
copyright = '2024, Simon Brière, Dominic Létourneau'
author = 'Simon Brière, Dominic Létourneau'
release = '1.2.5'
release = '1.2.6'
version = release

html_logo = 'images/LogoOpenTera200px.png'
Expand Down
2 changes: 1 addition & 1 deletion teraserver/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ endif(NOT CMAKE_BUILD_TYPE)
# Software version
SET(OPENTERA_VERSION_MAJOR "1")
SET(OPENTERA_VERSION_MINOR "2")
SET(OPENTERA_VERSION_PATCH "5")
SET(OPENTERA_VERSION_PATCH "6")

SET(OPENTERA_SERVER_VERSION OpenTera_v${OPENTERA_VERSION_MAJOR}.${OPENTERA_VERSION_MINOR}.${OPENTERA_VERSION_PATCH})

Expand Down
15 changes: 12 additions & 3 deletions teraserver/easyrtc/protected/index_participants.html
Original file line number Diff line number Diff line change
Expand Up @@ -235,9 +235,18 @@ <h5 class="modal-title" id="errorDialogLongTitle" data-i18n="errorDialog.title">
</div>
</div>
<div class="col-8 h-100" id="largeView">
<!-- Text display -->
<div id="localDisplay1" class="overlay-top-center" style="display:none">
<label class="chrono-large" id="localText1">Temps restant: xx:xx</label>
<div>
<div class="overlay-top-center d-flex">
<!-- Chrono display -->
<div id="localChrono1" class="mr-2" style="display:none">
<label class="chrono-large" id="localChronoText1">Temps restant: xx:xx</label>
</div>

<!-- Counter display -->
<div id="localCounter1" style="display:none">
<label class="chrono-large counter-large" id="localCounterText1">0</label>
</div>
</div>
</div>
</div>
<div class="col-2 h-100" id="remoteViews">
Expand Down
61 changes: 53 additions & 8 deletions teraserver/easyrtc/protected/index_users.html
Original file line number Diff line number Diff line change
Expand Up @@ -121,14 +121,14 @@ <h5 class="modal-title" id="chronosDialogLongTitle" data-i18n="chronosDialog.tit
<label for="chronosPartSelect" class="col-form-label col-4" data-i18n="chronosDialog.participants">Participant(s): </label>
<select id="chronosPartSelect" class="col combobox"></select>
</div>
<div class="form-group row pr-2">
<!--<div class="form-group row pr-2">
<label for="chronosTitleSelect" class="col-form-label col-4" data-i18n="chronosDialog.chrono-label">Libellé: </label>
<select id="chronosTitleSelect" class="col combobox">
<option value="" data-i18n="chronosDialog.label-none" selected>(Aucun)</option>
<option value="Exercices" data-i18n="chronosDialog.label-exercices">Exercices</option>
<option value="Repos" data-i18n="chronosDialog.label-rest">Repos</option>
</select>
</div>
</div>-->
<div class="form-group row pr-2">
<label class="col-form-label col-4" data-i18n="chronosDialog.chrono-type">Type: </label>
<div id="chronosTypeRadio" class="col col-form-label pl-0">
Expand All @@ -147,9 +147,9 @@ <h5 class="modal-title" id="chronosDialogLongTitle" data-i18n="chronosDialog.tit
<option value="600">10:00</option>
<option value="900">15:00</option>
</select>-->
<input id="chronosDurationMinutes" class="col-2" type="number" min="0" max="55" step="1" value="0" />
<input id="chronosDurationMinutes" class="col-2" type="number" min="0" max="55" step="1" value="2" />
<label class="col-form-label col-2" data-i18n="chronosDialog.minutes">minutes</label>
<input id="chronosDurationSeconds" class="col-2" type="number" min="0" max="55" step="5" value="30" />
<input id="chronosDurationSeconds" class="col-2" type="number" min="0" max="55" step="5" value="0" />
<label class="col-form-label col-2" data-i18n="chronosDialog.seconds">secondes</label>
</div>
</form>
Expand All @@ -167,7 +167,7 @@ <h5 class="modal-title" id="chronosDialogLongTitle" data-i18n="chronosDialog.tit
<!-- Measurement dialog -->
<div class="modal fade" id="measureDialog" tabindex="-1" role="dialog" aria-labelledby="measureDialogCenterTitle"
aria-hidden="true">
<div class="modal-dialog large-modal-dialog modal-dialog-centered" role="document">
<div class="modal-dialog draggable large-modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="measureDialogLongTitle" data-i18n="measureDialog.title">Mesures</h5>
Expand Down Expand Up @@ -203,6 +203,33 @@ <h5 class="modal-title" id="measureDialogLongTitle" data-i18n="measureDialog.tit
</div>
</div>

<!-- CounterDialog -->
<div class="modal fade" id="counterDialog" tabindex="-1" role="dialog" aria-labelledby="counterDialogCenterTitle"
aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="counterDialogLongTitle" data-i18n="counterDialog.title"></h5>

</div>
<div class="modal-body">
<form id="counterForm">
<div class="form-group row pr-2">
<label for="counterPartSelect" class="col-form-label col-4" data-i18n="counterDialog.participants">Participant(s): </label>
<select id="counterPartSelect" class="col combobox"></select>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" id="counterStart" class="btn btn-success" data-dismiss="modal"
onclick="startCountersFromDialog();" data-i18n="counterDialog.start">
Activer</button>
<button type="button" id="counterCancel" class="btn btn-primary" data-dismiss="modal" data-i18n="counterDialog.cancel">Annuler</button>
</div>
</div>
</div>
</div>

<!-- ErrorDialog -->
<div class="modal fade" id="errorDialog" tabindex="-1" role="dialog" aria-labelledby="errorDialogCenterTitle"
aria-hidden="true">
Expand Down Expand Up @@ -250,11 +277,25 @@ <h5 class="modal-title" id="errorDialogLongTitle" data-i18n="errorDialog.title">
<input id="localBtnSwapVideo1" class="image-icon" type="image" alt="image" src="images/swap.png" onclick="enlargeView(true,1);event.stopPropagation();" style="display: none;"/>
</div>

<!-- Text display -->
<div id="localDisplay1" class="overlay-top-center" style="display:none">
<label class="chrono" id="localText1" onclick="stopChrono(true, 1);">Temps restant: xx:xx</label>
<!-- Chrono display -->
<div id="localTools" class="overlay-top-center">
<div id="localChrono1" style="display:none">
<label class="chrono" id="localChronoText1">xx:xx</label>
<input class="image-icon chrono-button" id="localChronoPlay1" type="image" alt="image" src="images/play.png" onclick="startChrono();"/>
<input class="image-icon chrono-button" id="localChronoPause1" type="image" alt="image" src="images/pause.png" onclick="pauseChrono(true,1);"/>
<input class="image-icon chrono-button" id="localChronoStop1" type="image" alt="image" src="images/stop.png" onclick="stopChrono(true, 1);"/>
</div>

<!-- Counter display -->
<div id="localCounter1" style="display:none">
<input class="image-icon chrono-button" id="localCounterMinus1" type="image" alt="image" src="images/minus.png" onclick="counterMinus(true, 1);"/>
<label class="chrono counter" id="localCounterText1">00</label>
<input class="image-icon chrono-button" id="localCounterPlus1" type="image" alt="image" src="images/plus.png" onclick="counterPlus(true, 1);"/>
<input class="image-icon chrono-button" id="localCounterStop1" type="image" alt="image" src="images/stop.png" onclick="stopCounter(true, 1);"/>
</div>
</div>


<!-- Micro, video, sensors, ... controls -->
<div id="localViewControls1" class="overlay-bottom-center">
<input id="localConfig1" class="image-icon" type="image" alt="image" src="images/config.png" onclick="btnConfigClicked(true, 1);event.stopPropagation();" style="display: none;"/>
Expand Down Expand Up @@ -380,6 +421,10 @@ <h5 class="modal-title" id="errorDialogLongTitle" data-i18n="errorDialog.title">
<input class="tool-icon" id="btnChronos" type="image" alt="image" src="images/timer.png"/>
<label data-i18n="ui.chronos">Chronos</label>
</div>
<div class="dropdown-item" onclick="showCounterDialog();">
<input class="tool-icon" id="btnCounter" type="image" alt="image" src="images/counter.png"/>
<label data-i18n="ui.counter">Chronos</label>
</div>
<div class="dropdown-item" onclick="showMeasuresDialog();">
<input class="tool-icon" id="btnAngles" type="image" alt="image" src="images/angles.png"/>
<label data-i18n="ui.measures">Mesures</label>
Expand Down
Loading
Loading