Skip to content

Commit

Permalink
Merge pull request #252 from introlab/dev
Browse files Browse the repository at this point in the history
Main merge for 1.2.6 release
  • Loading branch information
SBriere committed May 13, 2024
2 parents 2560254 + d61f414 commit b6ab857
Show file tree
Hide file tree
Showing 61 changed files with 1,594 additions and 544 deletions.
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

0 comments on commit b6ab857

Please sign in to comment.