Skip to content

Commit b6ab857

Browse files
authored
Merge pull request #252 from introlab/dev
Main merge for 1.2.6 release
2 parents 2560254 + d61f414 commit b6ab857

File tree

61 files changed

+1594
-544
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+1594
-544
lines changed

.github/workflows/draft-joss-paper-pdf.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
name: JOSS Paper Draft PDF
22

33
on:
4-
push:
5-
branches: [main, joss-paper-review]
64
workflow_dispatch:
75
branches: [main, joss-paper-review]
86

docker/dev/nginx/opentera.conf

Lines changed: 2 additions & 141 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
2-
31
location / {
42
proxy_pass http://opentera-server:4040;
53
proxy_set_header X-ExternalPort $server_port;
@@ -54,36 +52,6 @@ location /file/ {
5452
proxy_set_header X-Script-Name /file;
5553
}
5654

57-
58-
location /bureau/ {
59-
proxy_pass http://opentera-server:4050/;
60-
proxy_redirect http://$host/ https://$host:$server_port/;
61-
proxy_set_header X-ExternalPort $server_port;
62-
proxy_set_header X-ExternalHost $host;
63-
proxy_set_header X_ExternalServer $server_name;
64-
proxy_set_header Host $host;
65-
proxy_set_header X-Real-IP $remote_addr;
66-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
67-
proxy_set_header X-Forwarded-Proto $scheme;
68-
proxy_set_header X-Scheme $scheme;
69-
proxy_set_header X-Script-Name /bureau;
70-
}
71-
72-
location /dance/ {
73-
client_max_body_size 2G;
74-
proxy_pass http://opentera-server:4060/;
75-
proxy_redirect http://$host/ https://$host:$server_port/;
76-
proxy_set_header X-ExternalPort $server_port;
77-
proxy_set_header X-ExternalHost $host;
78-
proxy_set_header X_ExternalServer $server_name;
79-
proxy_set_header Host $host;
80-
proxy_set_header X-Real-IP $remote_addr;
81-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
82-
proxy_set_header X-Forwarded-Proto $scheme;
83-
proxy_set_header X-Scheme $scheme;
84-
proxy_set_header X-Script-Name /dance;
85-
}
86-
8755
location /rehab/ {
8856
proxy_pass http://opentera-server:4070/;
8957
proxy_redirect http://$host/ https://$host:$server_port/;
@@ -98,48 +66,6 @@ location /rehab/ {
9866
proxy_set_header X-Script-Name /rehab;
9967
}
10068

101-
location /robot/ {
102-
proxy_pass http://opentera-server:4080/;
103-
proxy_redirect http://$host/ https://$host:$server_port/;
104-
proxy_set_header X-ExternalPort $server_port;
105-
proxy_set_header X-ExternalHost $host;
106-
proxy_set_header X_ExternalServer $server_name;
107-
proxy_set_header Host $host;
108-
proxy_set_header X-Real-IP $remote_addr;
109-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
110-
proxy_set_header X-Forwarded-Proto $scheme;
111-
proxy_set_header X-Scheme $scheme;
112-
proxy_set_header X-Script-Name /robot;
113-
}
114-
115-
location /webportal/ {
116-
proxy_pass http://opentera-server:4090/;
117-
proxy_redirect http://$host/ https://$host:$server_port/;
118-
proxy_set_header X-ExternalPort $server_port;
119-
proxy_set_header X-ExternalHost $host;
120-
proxy_set_header X_ExternalServer $server_name;
121-
proxy_set_header Host $host;
122-
proxy_set_header X-Real-IP $remote_addr;
123-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
124-
proxy_set_header X-Forwarded-Proto $scheme;
125-
proxy_set_header X-Scheme $scheme;
126-
proxy_set_header X-Script-Name /webportal;
127-
}
128-
129-
location /room/ {
130-
proxy_pass http://opentera-server:5000/;
131-
proxy_redirect http://$host/ https://$host:$server_port/;
132-
proxy_set_header X-ExternalPort $server_port;
133-
proxy_set_header X-ExternalHost $host;
134-
proxy_set_header X_ExternalServer $server_name;
135-
proxy_set_header Host $host;
136-
proxy_set_header X-Real-IP $remote_addr;
137-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
138-
proxy_set_header X-Forwarded-Proto $scheme;
139-
proxy_set_header X-Scheme $scheme;
140-
proxy_set_header X-Script-Name /room;
141-
}
142-
14369
location /example/ {
14470
proxy_pass http://opentera-server:5010/;
14571
proxy_redirect http://$host/ https://$host:$server_port/;
@@ -157,7 +83,7 @@ location /example/ {
15783
########################################################################################################################
15884
# webrtc on port xxxx
15985
########################################################################################################################
160-
location ~ ^/webrtc/([0-9]+)/(.*)$ {
86+
location ~ ^/webrtc/(808\d|809\d|81[0-2]\d|8130)/(.*)$ {
16187
resolver 127.0.0.11;
16288
proxy_pass http://opentera-server:$1/$2$is_args$args;
16389
proxy_set_header X-ExternalPort $server_port;
@@ -171,75 +97,10 @@ location ~ ^/webrtc/([0-9]+)/(.*)$ {
17197
proxy_set_header X-Script-Name /webrtc/;
17298
}
17399

174-
location ~ ^/webrtc_dance/([0-9]+)/(.*)$ {
175-
resolver 127.0.0.11;
176-
proxy_pass http://opentera-server:$1/$2$is_args$args;
177-
proxy_set_header X-ExternalPort $server_port;
178-
proxy_set_header X-ExternalHost $host;
179-
proxy_set_header X_ExternalServer $server_name;
180-
proxy_set_header Host $host;
181-
proxy_set_header X-Real-IP $remote_addr;
182-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
183-
proxy_set_header X-Forwarded-Proto $scheme;
184-
proxy_set_header X-Scheme $scheme;
185-
proxy_set_header X-Script-Name /webrtc_dance/;
186-
187-
proxy_http_version 1.1;
188-
proxy_set_header Upgrade $http_upgrade;
189-
proxy_set_header Connection "upgrade";
190-
}
191-
192-
location ~ ^/websocket/([0-9]+)/(.*)$ {
100+
location ~ ^/websocket/(808\d|809\d|81[0-2]\d|8130)/(.*)$ {
193101
resolver 127.0.0.11;
194102
proxy_pass http://opentera-server:$1/websocket/$1/$2$is_args$args;
195103
proxy_http_version 1.1;
196104
proxy_set_header Upgrade $http_upgrade;
197105
proxy_set_header Connection "upgrade";
198106
}
199-
########################################################################################################################
200-
201-
########################################################################################################################
202-
# webrtc_teleop on port defined in url tilda means will have regexp,
203-
########################################################################################################################
204-
location ~ ^/webrtc_teleop/.*$ {
205-
206-
# Here is a tool to help you debug these regular expressions https://regex101.com/
207-
# The order of these rewrites are important!
208-
209-
# Handle request ending with js/*.js or css css/*.css (Styles and scripts files in static folder)
210-
rewrite ^/webrtc_teleop/([0-9]+)/.*((?>js|css)/.*\.(?>css|js|map))$ /signaling_server/$1/$2 last;
211-
212-
# Handle request for /iceservers
213-
rewrite ^/webrtc_teleop/([0-9]+)/iceservers$ /signaling_server/$1/iceservers last;
214-
215-
# Handle request for /socket.io
216-
rewrite ^/webrtc_teleop/([0-9]+)/socket.io(.*)$ /signaling_server/$1/socket.io$2 last;
217-
218-
# Handle request with no index.html and not ending with .css or .js (Application's router)
219-
rewrite ^/webrtc_teleop/([0-9]+)/((?!index.html).*(?<!\.css|\.js))$ /signaling_server/$1/index.html last;
220-
221-
# Redirection to the proxy
222-
rewrite ^/webrtc_teleop/(.*)$ /signaling_server/$1$is_args$args last;
223-
224-
# No request has matched, Forbiden
225-
return 403;
226-
}
227-
228-
location ~ ^/signaling_server/(.*)$ {
229-
proxy_pass http://opentera-server:$1$is_args$args;
230-
proxy_set_header X-ExternalPort $server_port;
231-
proxy_set_header X-ExternalHost $host;
232-
proxy_set_header X_ExternalServer $server_name;
233-
proxy_set_header Host $host;
234-
proxy_set_header X-Real-IP $remote_addr;
235-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
236-
proxy_set_header X-Forwarded-Proto $scheme;
237-
proxy_set_header X-Scheme $scheme;
238-
# proxy_set_header X-Script-Name /webrtc_teleop/;
239-
240-
# Websocket upgrades
241-
proxy_http_version 1.1;
242-
proxy_set_header Upgrade $http_upgrade;
243-
proxy_set_header Connection "upgrade";
244-
}
245-

docker/prod/nginx/opentera.conf

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ location /rehab/ {
7474
########################################################################################################################
7575
# webrtc on port xxxx
7676
########################################################################################################################
77-
location ~ ^/webrtc/([0-9]+)/(.*)$ {
77+
# Range from 8080 to 8130
78+
location ~ ^/webrtc/(808\d|809\d|81[0-2]\d|8130)/(.*)$ {
7879
resolver 127.0.0.11;
7980
proxy_pass http://opentera-server:$1/$2$is_args$args;
8081
proxy_set_header X-ExternalPort $server_port;
@@ -88,7 +89,7 @@ location ~ ^/webrtc/([0-9]+)/(.*)$ {
8889
proxy_set_header X-Script-Name /webrtc/;
8990
}
9091

91-
location ~ ^/websocket/([0-9]+)/(.*)$ {
92+
location ~ ^/websocket/(808\d|809\d|81[0-2]\d|8130)/(.*)$ {
9293
resolver 127.0.0.11;
9394
proxy_pass http://opentera-server:$1/websocket/$1/$2$is_args$args;
9495
proxy_http_version 1.1;

docs/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
project = 'OpenTera'
1010
copyright = '2024, Simon Brière, Dominic Létourneau'
1111
author = 'Simon Brière, Dominic Létourneau'
12-
release = '1.2.5'
12+
release = '1.2.6'
1313
version = release
1414

1515
html_logo = 'images/LogoOpenTera200px.png'

teraserver/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ endif(NOT CMAKE_BUILD_TYPE)
1010
# Software version
1111
SET(OPENTERA_VERSION_MAJOR "1")
1212
SET(OPENTERA_VERSION_MINOR "2")
13-
SET(OPENTERA_VERSION_PATCH "5")
13+
SET(OPENTERA_VERSION_PATCH "6")
1414

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

teraserver/easyrtc/protected/index_participants.html

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,9 +235,18 @@ <h5 class="modal-title" id="errorDialogLongTitle" data-i18n="errorDialog.title">
235235
</div>
236236
</div>
237237
<div class="col-8 h-100" id="largeView">
238-
<!-- Text display -->
239-
<div id="localDisplay1" class="overlay-top-center" style="display:none">
240-
<label class="chrono-large" id="localText1">Temps restant: xx:xx</label>
238+
<div>
239+
<div class="overlay-top-center d-flex">
240+
<!-- Chrono display -->
241+
<div id="localChrono1" class="mr-2" style="display:none">
242+
<label class="chrono-large" id="localChronoText1">Temps restant: xx:xx</label>
243+
</div>
244+
245+
<!-- Counter display -->
246+
<div id="localCounter1" style="display:none">
247+
<label class="chrono-large counter-large" id="localCounterText1">0</label>
248+
</div>
249+
</div>
241250
</div>
242251
</div>
243252
<div class="col-2 h-100" id="remoteViews">

teraserver/easyrtc/protected/index_users.html

Lines changed: 53 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -121,14 +121,14 @@ <h5 class="modal-title" id="chronosDialogLongTitle" data-i18n="chronosDialog.tit
121121
<label for="chronosPartSelect" class="col-form-label col-4" data-i18n="chronosDialog.participants">Participant(s): </label>
122122
<select id="chronosPartSelect" class="col combobox"></select>
123123
</div>
124-
<div class="form-group row pr-2">
124+
<!--<div class="form-group row pr-2">
125125
<label for="chronosTitleSelect" class="col-form-label col-4" data-i18n="chronosDialog.chrono-label">Libellé: </label>
126126
<select id="chronosTitleSelect" class="col combobox">
127127
<option value="" data-i18n="chronosDialog.label-none" selected>(Aucun)</option>
128128
<option value="Exercices" data-i18n="chronosDialog.label-exercices">Exercices</option>
129129
<option value="Repos" data-i18n="chronosDialog.label-rest">Repos</option>
130130
</select>
131-
</div>
131+
</div>-->
132132
<div class="form-group row pr-2">
133133
<label class="col-form-label col-4" data-i18n="chronosDialog.chrono-type">Type: </label>
134134
<div id="chronosTypeRadio" class="col col-form-label pl-0">
@@ -147,9 +147,9 @@ <h5 class="modal-title" id="chronosDialogLongTitle" data-i18n="chronosDialog.tit
147147
<option value="600">10:00</option>
148148
<option value="900">15:00</option>
149149
</select>-->
150-
<input id="chronosDurationMinutes" class="col-2" type="number" min="0" max="55" step="1" value="0" />
150+
<input id="chronosDurationMinutes" class="col-2" type="number" min="0" max="55" step="1" value="2" />
151151
<label class="col-form-label col-2" data-i18n="chronosDialog.minutes">minutes</label>
152-
<input id="chronosDurationSeconds" class="col-2" type="number" min="0" max="55" step="5" value="30" />
152+
<input id="chronosDurationSeconds" class="col-2" type="number" min="0" max="55" step="5" value="0" />
153153
<label class="col-form-label col-2" data-i18n="chronosDialog.seconds">secondes</label>
154154
</div>
155155
</form>
@@ -167,7 +167,7 @@ <h5 class="modal-title" id="chronosDialogLongTitle" data-i18n="chronosDialog.tit
167167
<!-- Measurement dialog -->
168168
<div class="modal fade" id="measureDialog" tabindex="-1" role="dialog" aria-labelledby="measureDialogCenterTitle"
169169
aria-hidden="true">
170-
<div class="modal-dialog large-modal-dialog modal-dialog-centered" role="document">
170+
<div class="modal-dialog draggable large-modal-dialog modal-dialog-centered" role="document">
171171
<div class="modal-content">
172172
<div class="modal-header">
173173
<h5 class="modal-title" id="measureDialogLongTitle" data-i18n="measureDialog.title">Mesures</h5>
@@ -203,6 +203,33 @@ <h5 class="modal-title" id="measureDialogLongTitle" data-i18n="measureDialog.tit
203203
</div>
204204
</div>
205205

206+
<!-- CounterDialog -->
207+
<div class="modal fade" id="counterDialog" tabindex="-1" role="dialog" aria-labelledby="counterDialogCenterTitle"
208+
aria-hidden="true">
209+
<div class="modal-dialog modal-dialog-centered" role="document">
210+
<div class="modal-content">
211+
<div class="modal-header">
212+
<h5 class="modal-title" id="counterDialogLongTitle" data-i18n="counterDialog.title"></h5>
213+
214+
</div>
215+
<div class="modal-body">
216+
<form id="counterForm">
217+
<div class="form-group row pr-2">
218+
<label for="counterPartSelect" class="col-form-label col-4" data-i18n="counterDialog.participants">Participant(s): </label>
219+
<select id="counterPartSelect" class="col combobox"></select>
220+
</div>
221+
</form>
222+
</div>
223+
<div class="modal-footer">
224+
<button type="button" id="counterStart" class="btn btn-success" data-dismiss="modal"
225+
onclick="startCountersFromDialog();" data-i18n="counterDialog.start">
226+
Activer</button>
227+
<button type="button" id="counterCancel" class="btn btn-primary" data-dismiss="modal" data-i18n="counterDialog.cancel">Annuler</button>
228+
</div>
229+
</div>
230+
</div>
231+
</div>
232+
206233
<!-- ErrorDialog -->
207234
<div class="modal fade" id="errorDialog" tabindex="-1" role="dialog" aria-labelledby="errorDialogCenterTitle"
208235
aria-hidden="true">
@@ -250,11 +277,25 @@ <h5 class="modal-title" id="errorDialogLongTitle" data-i18n="errorDialog.title">
250277
<input id="localBtnSwapVideo1" class="image-icon" type="image" alt="image" src="images/swap.png" onclick="enlargeView(true,1);event.stopPropagation();" style="display: none;"/>
251278
</div>
252279

253-
<!-- Text display -->
254-
<div id="localDisplay1" class="overlay-top-center" style="display:none">
255-
<label class="chrono" id="localText1" onclick="stopChrono(true, 1);">Temps restant: xx:xx</label>
280+
<!-- Chrono display -->
281+
<div id="localTools" class="overlay-top-center">
282+
<div id="localChrono1" style="display:none">
283+
<label class="chrono" id="localChronoText1">xx:xx</label>
284+
<input class="image-icon chrono-button" id="localChronoPlay1" type="image" alt="image" src="images/play.png" onclick="startChrono();"/>
285+
<input class="image-icon chrono-button" id="localChronoPause1" type="image" alt="image" src="images/pause.png" onclick="pauseChrono(true,1);"/>
286+
<input class="image-icon chrono-button" id="localChronoStop1" type="image" alt="image" src="images/stop.png" onclick="stopChrono(true, 1);"/>
287+
</div>
288+
289+
<!-- Counter display -->
290+
<div id="localCounter1" style="display:none">
291+
<input class="image-icon chrono-button" id="localCounterMinus1" type="image" alt="image" src="images/minus.png" onclick="counterMinus(true, 1);"/>
292+
<label class="chrono counter" id="localCounterText1">00</label>
293+
<input class="image-icon chrono-button" id="localCounterPlus1" type="image" alt="image" src="images/plus.png" onclick="counterPlus(true, 1);"/>
294+
<input class="image-icon chrono-button" id="localCounterStop1" type="image" alt="image" src="images/stop.png" onclick="stopCounter(true, 1);"/>
295+
</div>
256296
</div>
257297

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

0 commit comments

Comments
 (0)