Compare commits

..

50 commits

Author SHA1 Message Date
ZianTT
14b59ac281
Update Chinese Translate File (#1025) 2023-01-17 13:33:35 +01:00
Rémai Gábor
83f8c2aae0
Merge pull request #1041 from edumeet/develop
update docs
2022-12-20 16:02:11 +01:00
Rémai Gábor
ca50944c3e update docs 2022-12-20 16:00:37 +01:00
Rémai Gábor
4c2c84dc84
Merge pull request #1040 from edumeet/develop
3.5.5 release
2022-12-20 15:30:38 +01:00
Rémai Gábor
62050c2d34
Merge branch 'master' into develop 2022-12-20 15:30:08 +01:00
Rémai Gábor
9177d56904
Update release number 2022-12-20 15:17:50 +01:00
Rémai Gábor
395b59c77f
Update release number 2022-12-20 15:17:35 +01:00
Rémai Gábor
2e7ba7ce70
Merge pull request #1039 from edumeet/feat-recorderparams
Feat recorderparams
2022-12-20 10:36:04 +01:00
Rémai Gábor
8c3cb932c5 remove default value from testing 2022-12-20 10:34:19 +01:00
Rémai Gábor
8f962dfe64 Add customisable infotooltip to join dialog. 2022-12-20 10:32:44 +01:00
Rémai Gábor
ab667d0d3c add hideSelfView 2022-12-19 15:26:03 +01:00
Rémai Gábor
df33b806e0
Merge pull request #1036 from edumeet/feat-recorderparams
Feat recorderparams
2022-12-13 10:23:04 +01:00
Rémai Gábor
1719aec298 add comment 2022-12-12 14:14:34 +00:00
Rémai Gábor
ff61d4cc37 Add hideNoVideoParticipants,filmstrip,acceptCookie 2022-12-12 14:10:32 +00:00
Rémai Gábor
907ac853cf
add new debian 11 network interface
hot-fix
2022-11-09 14:17:21 +01:00
Rémai Gábor
ac356025a7
fix build when dist folder is empty 2022-11-02 17:09:59 +01:00
Rémai Gábor
4761ab4958
Update package.json 2022-11-02 17:05:26 +01:00
Rémai Gábor
e11fd78abd
Update package.json 2022-11-02 17:05:03 +01:00
Rémai Gábor
272b92919c
Merge pull request #1027 from edumeet/develop
version 3.5.4
2022-11-02 17:03:08 +01:00
Astagor
948c978a64
Update Mediasoup version to fix build errors (#1019) 2022-08-23 12:41:59 +02:00
Rémai Gábor
c542c4b343
add meta keywords 2022-07-09 17:11:22 +02:00
Astagor
6d2047ccc3
Set preffered layers for extra video (#1013) 2022-06-06 08:39:34 +02:00
Rémai Gábor
2555d34141
Merge pull request #1010 from buraksumer/patch-2
Update Dockerfile
2022-05-25 10:15:50 +02:00
buraksumer
770a4240b1
Update Dockerfile 2022-05-25 00:36:38 +03:00
Rémai Gábor
488eb47581
Merge pull request #1005 from edumeet/feat-haproxyconfig-example
Feat haproxyconfig example
2022-05-20 15:02:31 +02:00
Rémai Gábor
0076b6e831
update formating, example, typo 2022-05-20 14:38:03 +02:00
Rémai Gábor
e41501ab5e
fix formating 2022-05-18 15:30:21 +02:00
Rémai Gábor
df35af971c
add haproxy 2.2 installation and cofig guide 2022-05-18 15:28:50 +02:00
Rémai Gábor
31d8255b54
update proxymd location 2022-05-18 15:28:18 +02:00
Astagor
0948035389
Fix frame rate for extra video (#1002) 2022-05-10 23:57:08 +02:00
N7Remus
61db9e3739
Fix crash with paralell localrecording and screenshare 2022-04-01 22:46:08 +02:00
sd4v1d
8a80350b62 Merge branch 'hotfix-3.5.3' into develop 2022-03-10 15:22:24 +01:00
sd4v1d
5de2d1bf99 Merge branch 'hotfix-3.5.3' 2022-03-10 15:12:23 +01:00
sd4v1d
c9e324e201 Update CHANGELOG 2022-03-10 14:45:01 +01:00
sd4v1d
26b81b06aa correcting configuration and github action
- removing options from config.example.js file
- run github action only on master branch
- bump version to 3.5.3
2022-03-10 14:13:55 +01:00
Stefan Otto
dc54dcd7e4
Update issue templates: Added Feature request template 2022-03-10 00:28:56 +01:00
Stefan Otto
8b3bf79c3f
Update issue templates: added custom issue template 2022-03-10 00:28:12 +01:00
Stefan Otto
5d634da11e
Update issue templates 2022-03-10 00:25:41 +01:00
Stefan Otto
64ee2ab74b Merge branch 'release-3.5.2' into develop 2022-03-09 22:45:32 +01:00
Stefan Otto
fc9935ae39 Merge branch 'release-3.5.2' 2022-03-09 22:38:58 +01:00
Stefan Otto
79dd6cce95 updated Changelog 2022-03-09 22:31:40 +01:00
Stefan Otto
bf2c99e56c v3.5.2 2022-03-09 22:25:55 +01:00
Stefan Otto
175e7c2156 v3.5.2 2022-03-09 22:23:36 +01:00
Stefan Otto
a3390b18ca security update for dependencies 2022-03-09 22:22:44 +01:00
Stefan Otto
5d4138fbe0 Merge branch 'master' into develop 2022-03-09 21:38:59 +01:00
Stefan Otto
81e6f3d26f Merge back complete release 3.5.1 from branch 'master' into develop 2022-03-09 21:19:46 +01:00
Saša Davidović
785cf03f43
Merge pull request #973 from sd4v1d/master
Update develop-deb.yml
2022-03-04 00:53:21 +01:00
Saša Davidović
a6bb7e148c
Update develop-deb.yml 2022-03-04 00:43:39 +01:00
Stefan Otto
8f6d06d0a5 Merge branch 'release-3.5.1' into develop 2022-03-03 15:04:53 +01:00
Stefan Otto
6c288338e7 Merge branch 'release-3.5.1' into develop 2022-03-03 14:59:17 +01:00
24 changed files with 467 additions and 196 deletions

40
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View file

@ -0,0 +1,40 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. ...
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Branch/Versions:**
If you are developer, on which branch is this.
If you are reporting as user, on which version or location you experienced the issue.
Version is available under the 3 dots in the topbar under about.
**Server (if available please complete the following information):**
- OS: [e.g. Debian 11]
**Client:**
- Browser [e.g. chrome, safari, firefox, edge, ...]
- Browser version [e.g. 99]
- other [e.g. mobil browser under ios]
**Additional context**
Add any other context about the problem here.

10
.github/ISSUE_TEMPLATE/custom.md vendored Normal file
View file

@ -0,0 +1,10 @@
---
name: Custom issue template
about: Describe this issue template's purpose here.
title: ''
labels: ''
assignees: ''
---

View file

@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View file

@ -2,7 +2,7 @@ name: Debian package
on:
push:
branches: [ develop, release-3.5.0 ]
branches: [ master ]
# pull_request:
# branches: [ develop ]
@ -91,16 +91,16 @@ jobs:
chmod 775 DEBIAN/postinst
cd ../
dpkg-deb -Zgzip --build package
mv /home/runner/package.deb /home/runner/edumeet-$VERSION-beta1.deb
mv /home/runner/package.deb /home/runner/edumeet-$VERSION.deb
- name : Upload artifact
uses: actions/upload-artifact@v2
with:
name: edumeet-${{ steps.get-version.outputs.VERSION }}-beta1
name: edumeet-${{ steps.get-version.outputs.VERSION }}
path: "/home/runner/edumeet-*.deb"
- name: Add to release assets
uses: softprops/action-gh-release@v1
with:
tag_name: "v3.5.0-beta.1"
tag_name: ${{ steps.get-version.outputs.VERSION }}
files: "/home/runner/edumeet-*.deb"

View file

@ -1,5 +1,9 @@
# Changelog
## 3.5.3
Hotfix configuration issue
## 3.5.2
Security update for dependencies
## 3.5.1
* Updated Documentation

View file

@ -248,7 +248,7 @@ sudo systemctl enable edumeet
## Load balanced installation
To deploy this as a load balanced cluster, have a look at [HAproxy](HAproxy.md).
To deploy this as a load balanced cluster, have a look at [HAproxy](/docs/HAproxy.md).
## Learning management integration

View file

@ -1,6 +1,6 @@
{
"name": "edumeet",
"version": "3.5.1",
"version": "3.5.5",
"private": true,
"description": "edumeet meeting service",
"author": "Håvar Aambø Fosstveit <h@fosstveit.net>",
@ -43,7 +43,7 @@
"is-electron": "^2.2.0",
"marked": "^0.8.0",
"material-ui-popup-state": "^1.8.0",
"mediasoup-client": "^3.6.47",
"mediasoup-client": "^3.6.55",
"notistack": "^0.9.5",
"prop-types": "^15.7.2",
"random-string": "^0.2.0",
@ -70,6 +70,7 @@
"source-map-explorer": "^2.1.0",
"streamsaver": "^2.0.5",
"typescript": "^4.2.4",
"universal-cookie": "4.0.4",
"web-streams-polyfill": "^3.0.2",
"webtorrent": "^0.108.1"
},
@ -110,6 +111,6 @@
"eslint-webpack-plugin": "^2.5.3",
"foreman": "^3.0.1",
"redux-mock-store": "^1.5.3",
"ts-node": "^10.5.0"
"ts-node": "^10.9.1"
}
}

View file

@ -52,6 +52,9 @@
| lockLastN | If true, the users can not change the number of visible speakers. | `"boolean"` | ``false`` |
| logo | If not null, it shows the logo loaded from the specified URL, otherwise it shows the title. | `"url"` | ``"images/logo.edumeet.svg"`` |
| title | The title to show if the logo is not specified. | `"string"` | ``"edumeet"`` |
| infoTooltipText | Informative text on the join page. If empty hidden. | `"string"` | ``""`` |
| infoTooltipLink | Informative text link site on the join page. If empty hidden. | `"string"` | ``""`` |
| infoTooltipDesc | Informative text description on the join page. If empty hidden. | `"string"` | ``""`` |
| supportUrl | The service & Support URL; if `null`, it will be not displayed on the about dialogs. | `"url"` | ``"https://support.example.com"`` |
| privacyUrl | The privacy and data protection external URL or local HTML path. | `"string"` | ``"privacy/privacy.html"`` |
| theme | UI theme elements colors. | `"object"` | ``{ "palette": { "primary": { "main": "#313131" } }, "overrides": { "MuiAppBar": { "colorPrimary": { "backgroundColor": "#313131" } }, "MuiButton": { "containedPrimary": { "backgroundColor": "#5F9B2D", "&:hover": { "backgroundColor": "#5F9B2D" } }, "containedSecondary": { "backgroundColor": "#f50057", "&:hover": { "backgroundColor": "#f50057" } } }, "MuiFab": { "primary": { "backgroundColor": "#518029", "&:hover": { "backgroundColor": "#518029" }, "&:disabled": { "color": "#999898", "backgroundColor": "#323131" } }, "secondary": { "backgroundColor": "#f50057", "&:hover": { "backgroundColor": "#f50057" }, "&:disabled": { "color": "#999898", "backgroundColor": "#323131" } } }, "MuiBadge": { "colorPrimary": { "backgroundColor": "#5F9B2D", "&:hover": { "backgroundColor": "#518029" } } } }, "typography": { "useNextVariants": true }}`` |

View file

@ -304,6 +304,15 @@ var config = {
// The title to show if the logo is not specified.
title : 'edumeet',
// Informative text on the join page. If empty hidden.
infoTooltipText : '',
// Informative text link site on the join page. If empty hidden.
infoTooltipLink : '',
// Informative text description on the join page. If empty hidden.
infoTooltipDesc : '',
// The service & Support URL; if `null`, it will be not displayed on the about dialogs.
supportUrl : 'https://support.example.com',

View file

@ -7,6 +7,7 @@
content='width=device-width, initial-scale=1, shrink-to-fit=no'
/>
<meta name='description' content='edumeet - Simple web meetings'>
<meta name="keywords" content="edumeet,letsmeet,multiparty,videoconference,meet,WebRTC,room,rooms,geant,video conferencing, video conference, online meetings, web meeting, video meeting, cloud meeting, cloud video, group video call, group video chat, screen share, application share, mobility, mobile collaboration, desktop share, video collaboration">
<meta name='theme-color' content='#000000' />
<link rel='preconnect' href='https://fonts.googleapis.com/css?family=Roboto' rel='stylesheet'>

View file

@ -4283,7 +4283,7 @@ export default class RoomClient
try
{
const device = this._webcams[videoDeviceId];
const { resolution, aspectRatio } = store.getState().settings;
const { resolution, aspectRatio, frameRate } = store.getState().settings;
if (!device)
throw new Error('no webcam devices');
@ -4293,7 +4293,8 @@ export default class RoomClient
video :
{
deviceId : { ideal: videoDeviceId },
...getVideoConstrains(resolution, aspectRatio)
...getVideoConstrains(resolution, aspectRatio),
frameRate
}
});

View file

@ -349,21 +349,32 @@ const Peer = (props) =>
{
const handler = setTimeout(() =>
{
const consumer = webcamConsumer || screenConsumer;
const consumers = [];
if (!consumer)
return;
if (webcamConsumer)
consumers.push(webcamConsumer);
if (windowConsumer === consumer.id)
if (screenConsumer)
consumers.push(screenConsumer);
extraVideoConsumers.map((consumer) =>
{
// if playing in external window, set the maximum quality levels
roomClient.setConsumerPreferredLayersMax(consumer);
}
else if (enableLayersSwitch && consumer?.type !== 'simple'
&& fullScreenConsumer !== consumer.id)
consumers.push(consumer);
});
consumers.forEach((consumer) =>
{
roomClient.adaptConsumerPreferredLayers(consumer, width, height);
}
if (windowConsumer === consumer.id)
{
// if playing in external window, set the maximum quality levels
roomClient.setConsumerPreferredLayersMax(consumer);
}
else if (enableLayersSwitch && consumer?.type !== 'simple'
&& fullScreenConsumer !== consumer.id)
{
roomClient.adaptConsumerPreferredLayers(consumer, width, height);
}
});
}, 1000);
return () => { clearTimeout(handler); };
@ -371,6 +382,7 @@ const Peer = (props) =>
enableLayersSwitch,
webcamConsumer,
screenConsumer,
extraVideoConsumers,
windowConsumer,
fullScreenConsumer,
roomClient, width, height

View file

@ -39,6 +39,7 @@ import { useHistory, useLocation } from 'react-router-dom';
import IconButton from '@material-ui/core/IconButton';
import Tooltip from '@material-ui/core/Tooltip';
import { config } from '../config';
import InfoIcon from '@material-ui/icons/Info';
const styles = (theme) =>
({
@ -186,7 +187,6 @@ const JoinDialog = ({
}) =>
{
const location = useLocation();
const history = useHistory();
@ -671,6 +671,51 @@ const JoinDialog = ({
</Button>
</Grid>
{ config.infoTooltipText!=='' &&
<div className={classes.infoToolTip}
style={{
'padding-top' : '20px',
'overflowX' : 'auto',
'width' : '100%',
'display' : 'flex',
'align-items' : 'center'
}}
>
<InfoIcon />
{ config.infoTooltipLink!=='' &&
<a
style={{
'text-decoration' : 'none',
'padding-left' : '5px'
}}
href={config.infoTooltipLink}
>{config.infoTooltipText}</a>
}
{ config.infoTooltipLink==='' &&
<p style={{
'text-decoration' : 'none',
'padding-left' : '5px'
}}
>{config.infoTooltipText}</p>
}
</div>
}
{ config.infoTooltipDesc!=='' &&
<div
className={classes.infoToolTip}
style={{
'padding-top' : '15px',
'overflowX' : 'auto',
'width' : '100%',
'display' : 'flex',
'align-items' : 'center'
}}
>
{config.infoTooltipDesc}
</div>
}
{/*
{authType === 'auth' && !loggedIn &&
<Grid item>

View file

@ -437,6 +437,7 @@ class VideoView extends React.PureComponent
localRecordingState==='resume'
)&&
(
recordingConsents!==undefined &&
!recordingConsents.includes(peer.id)
)
) ? '':displayName
@ -459,6 +460,7 @@ class VideoView extends React.PureComponent
localRecordingState==='resume'
)&&
(
recordingConsents!==undefined &&
!recordingConsents.includes(peer.id)
)
)

View file

@ -498,6 +498,24 @@ Setting 'play' to null disables the sound notification.
format : 'String',
default : 'edumeet'
},
infoTooltipText :
{
doc : 'Informative text on the join page. If empty hidden.',
format : 'String',
default : ''
},
infoTooltipLink :
{
doc : 'Informative text link site on the join page. If empty hidden.',
format : 'String',
default : ''
},
infoTooltipDesc :
{
doc : 'Informative text description on the join page. If empty hidden.',
format : 'String',
default : ''
},
supportUrl :
{
doc : 'The service & Support URL; if `null`, it will be not displayed on the about dialogs.',

View file

@ -6,7 +6,7 @@ import isElectron from 'is-electron';
import { createIntl } from 'react-intl';
import { IntlProvider } from 'react-intl-redux';
import Cookies from 'universal-cookie';
import { Route, HashRouter, BrowserRouter, Switch } from 'react-router-dom';
import randomString from 'random-string';
import Logger from './Logger';
@ -15,6 +15,7 @@ import RoomClient from './RoomClient';
import RoomContext from './RoomContext';
import deviceInfo from './deviceInfo';
import * as meActions from './store/actions/meActions';
import * as roomActions from './store/actions/roomActions';
import UnsupportedBrowser from './components/UnsupportedBrowser';
import ConfigDocumentation from './components/ConfigDocumentation';
import ConfigError from './components/ConfigError';
@ -97,6 +98,25 @@ function run()
const displayName = parameters.get('displayName');
const muted = parameters.get('muted') === 'true';
const headless = parameters.get('headless');
const hideNoVideoParticipants = parameters.get('hideNoVideoParticipants');
const filmstripmode = parameters.get('filmstrip'); // filmstrip mode by default
const acceptCookie = parameters.get('acceptCookie'); // auto accept cookie popup
const hideSelfView = parameters.get('hideSelfView');
if (filmstripmode === 'true')
{
store.dispatch(
roomActions.setDisplayMode('filmstrip')
);
}
if (acceptCookie === 'true')
{
const cookies = new Cookies();
cookies.set('CookieConsent', 'true', { path: '/' });
}
const showConfigDocumentationPath = parameters.get('config') === 'true';
const { pathname } = window.location;
@ -218,6 +238,16 @@ function run()
basePath
});
if (hideNoVideoParticipants === 'true')
{
roomClient.setHideNoVideoParticipants(true);
}
if (hideSelfView === 'true')
{
store.dispatch(roomActions.setHideSelfView(hideSelfView));
}
global.CLIENT = roomClient;
render(

View file

@ -1,12 +1,12 @@
{
"configDocumentation.title": null,
"configError.bodyText": null,
"configError.link": null,
"configError.title": null,
"configDocumentation.title": "Edumeet 配置",
"configError.bodyText": "Edumeet 配置存在如下错误:",
"configError.link": "查看配置文档",
"configError.title": "配置错误",
"device.activateAudio": "激活音频",
"device.audioUnsupported": "音频不受支持",
"device.muteAudio": "静音",
"device.options": null,
"device.options": "设置",
"device.screenSharingUnsupported": "不支持屏幕共享",
"device.startScreenSharing": "开始屏幕共享",
"device.startVideo": "开始视频",
@ -16,12 +16,12 @@
"device.videoUnsupported": "视频不受支持",
"devices.cameraDisconnected": "相机已断开连接",
"devices.cameraError": "访问相机时发生错误",
"devices.chooseMedia": null,
"devices.chooseMedia": "选择媒体",
"devices.devicesChanged": "您的设备已更改,请在设置对话框中配置设备",
"devices.disableBothMicrophoneAndCamera": null,
"devices.enableBothMicrophoneAndCamera": null,
"devices.enableOnlyCamera": null,
"devices.enableOnlyMicrophone": null,
"devices.disableBothMicrophoneAndCamera": "关闭麦克风和摄像头",
"devices.enableBothMicrophoneAndCamera": "打开麦克风和摄像头",
"devices.enableOnlyCamera": "仅打开摄像头",
"devices.enableOnlyMicrophone": "仅打开麦克风",
"devices.microphoneDisconnected": "麦克风已断开",
"devices.microphoneEnable": "启用了麦克风",
"devices.microphoneError": "麦克风发生错误",
@ -33,7 +33,7 @@
"devices.screenSharingError": "访问屏幕时发生错误",
"filesharing.download": "下载共享文件",
"filesharing.error": "文件共享发生错误",
"filesharing.missingSeeds": "如果此过程需要很长时间,则可能没有人播下该种子。请尝试让某人重新上传您想要的文件。",
"filesharing.missingSeeds": "如果此过程需要很长时间,则可能没有人进行做种。请尝试使上传者重新上传您想要的文件。",
"filesharing.save": "保存共享文件",
"filesharing.saveFileError": "无法保存文件",
"filesharing.startingFileShare": "正在尝试共享文件",
@ -50,14 +50,14 @@
"label.chatNewMessages": null,
"label.chatNoMessages": null,
"label.close": "关闭",
"label.democratic": "主视图",
"label.democratic": "持人视图",
"label.fileSharingUnsupported": "不支持文件共享",
"label.filmstrip": "幻灯片视图",
"label.fullscreen": "全屏",
"label.guest": null,
"label.guest": "访客",
"label.high": "高 (HD)",
"label.italic": null,
"label.join": null,
"label.join": "入会",
"label.leave": "离开",
"label.leaveWithSavingChat": null,
"label.login": null,
@ -252,4 +252,4 @@
"unsupportedBrowser.bodyText": null,
"unsupportedBrowser.titleUnsupportedBrowser": null,
"unsupportedBrowser.titlewebrtcUnavailable": null
}
}

View file

@ -1209,17 +1209,12 @@
exec-sh "^0.3.2"
minimist "^1.2.0"
"@cspotcode/source-map-consumer@0.8.0":
version "0.8.0"
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b"
integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==
"@cspotcode/source-map-support@0.7.0":
version "0.7.0"
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5"
integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==
"@cspotcode/source-map-support@^0.8.0":
version "0.8.1"
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==
dependencies:
"@cspotcode/source-map-consumer" "0.8.0"
"@jridgewell/trace-mapping" "0.3.9"
"@csstools/convert-colors@^1.4.0":
version "1.4.0"
@ -1519,6 +1514,24 @@
"@types/yargs" "^15.0.0"
chalk "^4.0.0"
"@jridgewell/resolve-uri@^3.0.3":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
"@jridgewell/sourcemap-codec@^1.4.10":
version "1.4.14"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
"@jridgewell/trace-mapping@0.3.9":
version "0.3.9"
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
dependencies:
"@jridgewell/resolve-uri" "^3.0.3"
"@jridgewell/sourcemap-codec" "^1.4.10"
"@material-ui/core@^4.11.3":
version "4.11.4"
resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.11.4.tgz#4fb9fe5dec5dcf780b687e3a40cff78b2b9640a4"
@ -1931,6 +1944,11 @@
dependencies:
"@types/node" "*"
"@types/cookie@^0.3.3":
version "0.3.3"
resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.3.3.tgz#85bc74ba782fb7aa3a514d11767832b0e3bc6803"
integrity sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==
"@types/debug@^4.1.7":
version "4.1.7"
resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82"
@ -1956,11 +1974,6 @@
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
"@types/events@^3.0.0":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
"@types/glob@^7.1.1":
version "7.1.3"
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
@ -2831,10 +2844,10 @@ autoprefixer@^9.6.1:
postcss "^7.0.32"
postcss-value-parser "^4.1.0"
awaitqueue@^2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/awaitqueue/-/awaitqueue-2.3.3.tgz#35e6568970fcac3de1644a2c28abc1074045b570"
integrity sha512-RbzQg6VtPUtyErm55iuQLTrBJ2uihy5BKBOEkyBwv67xm5Fn2o/j+Bz+a5BmfSoe2oZ5dcz9Z3fExS8pL+LLhw==
awaitqueue@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/awaitqueue/-/awaitqueue-2.4.0.tgz#beb9a2b563b4817921f21c09cca2cdbb0d5989d4"
integrity sha512-9nTnPxVuxiuKFTHslm9ltnekUECJidOQ5kE6JpZUH77KrKqStQuWUW7JPB2GJZ7rOwWLcbToHiIXle/nJe1VpQ==
axe-core@^4.0.2:
version "4.2.1"
@ -4085,6 +4098,11 @@ cookie@0.4.0:
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
cookie@^0.4.0:
version "0.4.2"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
copy-concurrently@^1.0.0:
version "1.0.5"
resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
@ -4558,10 +4576,10 @@ debug@^3.1.1, debug@^3.2.6, debug@^3.2.7:
dependencies:
ms "^2.1.1"
debug@^4.3.3:
version "4.3.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
debug@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
@ -5905,9 +5923,9 @@ flush-write-stream@^1.0.0:
readable-stream "^2.3.6"
follow-redirects@^1.0.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43"
integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==
version "1.14.9"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7"
integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==
for-in@^1.0.2:
version "1.0.2"
@ -8401,21 +8419,21 @@ media-typer@0.3.0:
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
mediasoup-client@^3.6.47:
version "3.6.50"
resolved "https://registry.yarnpkg.com/mediasoup-client/-/mediasoup-client-3.6.50.tgz#16ca4fe7e2920c1d0e74c7e9b66bd13a4ebdf44b"
integrity sha512-YSd5GHD3gTyZXUBWDtpCeng1i+pE5dbRQeY11fQWKcFGEao2XaNW/+4FCzLBRNbEJZ2nFVJmxwNSFB4R4Jt/PQ==
mediasoup-client@^3.6.55:
version "3.6.66"
resolved "https://registry.yarnpkg.com/mediasoup-client/-/mediasoup-client-3.6.66.tgz#80e5dc2746b795d44c55901b0b8f5a796b196d87"
integrity sha512-xTT8v42ykXeAgGHH4MsTirtkMZ46hbPkKfbO663l0/vGu9uD1bSR5dFSe+scp6go1LKF+iDLnPyO0mvWLhlAKg==
dependencies:
"@types/debug" "^4.1.7"
"@types/events" "^3.0.0"
awaitqueue "^2.3.3"
awaitqueue "^2.4.0"
bowser "^2.11.0"
debug "^4.3.3"
debug "^4.3.4"
events "^3.3.0"
fake-mediastreamtrack "^1.1.6"
h264-profile-level-id "^1.0.1"
sdp-transform "^2.14.1"
supports-color "^9.2.1"
supports-color "^9.2.3"
uuid "^3.4.0"
mediasource@^2.2.2, mediasource@^2.3.0:
version "2.4.0"
@ -8613,9 +8631,9 @@ minipass-pipeline@^1.2.2:
minipass "^3.0.0"
minipass@^3.0.0, minipass@^3.1.1:
version "3.1.3"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd"
integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==
version "3.1.6"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee"
integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==
dependencies:
yallist "^4.0.0"
@ -11618,9 +11636,9 @@ simple-concat@^1.0.0:
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
simple-get@^3.0.1:
version "3.1.0"
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3"
integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==
version "3.1.1"
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.1.tgz#cc7ba77cfbe761036fbfce3d021af25fc5584d55"
integrity sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==
dependencies:
decompress-response "^4.2.0"
once "^1.3.1"
@ -12223,10 +12241,10 @@ supports-color@^7.0.0, supports-color@^7.1.0:
dependencies:
has-flag "^4.0.0"
supports-color@^9.2.1:
version "9.2.1"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.2.1.tgz#599dc9d45acf74c6176e0d880bab1d7d718fe891"
integrity sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==
supports-color@^9.2.3:
version "9.3.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.3.0.tgz#cce566c5ad562eece4dfe5a4502a58efc54986a9"
integrity sha512-hJ6RYjNbcBFkpHi+ykjar+7GgHs+65Kxyw940nBLOSjaWZ13acq4A5f+gWiV5w+xfsg5MbnjDxTigLcUuljerw==
supports-hyperlinks@^2.0.0:
version "2.2.0"
@ -12288,9 +12306,9 @@ tapable@^1.0.0, tapable@^1.1.3:
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
tar@^6.0.2:
version "6.1.0"
resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83"
integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==
version "6.1.11"
resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621"
integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==
dependencies:
chownr "^2.0.0"
fs-minipass "^2.0.0"
@ -12540,12 +12558,12 @@ tryer@^1.0.1:
resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
ts-node@^10.5.0:
version "10.5.0"
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.5.0.tgz#618bef5854c1fbbedf5e31465cbb224a1d524ef9"
integrity sha512-6kEJKwVxAJ35W4akuiysfKwKmjkbYxwQMTBaAxo9KKAx/Yd26mPUyhGz3ji+EsJoAgrLqVsYHNuuYwQe22lbtw==
ts-node@^10.9.1:
version "10.9.1"
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b"
integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==
dependencies:
"@cspotcode/source-map-support" "0.7.0"
"@cspotcode/source-map-support" "^0.8.0"
"@tsconfig/node10" "^1.0.7"
"@tsconfig/node12" "^1.0.7"
"@tsconfig/node14" "^1.0.0"
@ -12556,7 +12574,7 @@ ts-node@^10.5.0:
create-require "^1.1.0"
diff "^4.0.1"
make-error "^1.1.1"
v8-compile-cache-lib "^3.0.0"
v8-compile-cache-lib "^3.0.1"
yn "3.1.1"
ts-pnp@1.2.0, ts-pnp@^1.1.6:
@ -12771,6 +12789,14 @@ unique-string@^1.0.0:
dependencies:
crypto-random-string "^1.0.0"
universal-cookie@4.0.4:
version "4.0.4"
resolved "https://registry.yarnpkg.com/universal-cookie/-/universal-cookie-4.0.4.tgz#06e8b3625bf9af049569ef97109b4bb226ad798d"
integrity sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw==
dependencies:
"@types/cookie" "^0.3.3"
cookie "^0.4.0"
universalify@^0.1.0, universalify@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
@ -12838,9 +12864,9 @@ url-parse-lax@^3.0.0:
prepend-http "^2.0.0"
url-parse@^1.4.3, url-parse@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b"
integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==
version "1.5.10"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1"
integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
dependencies:
querystringify "^2.1.1"
requires-port "^1.0.0"
@ -12941,10 +12967,10 @@ uuid@^8.1.0, uuid@^8.3.0:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
v8-compile-cache-lib@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz#0582bcb1c74f3a2ee46487ceecf372e46bce53e8"
integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==
v8-compile-cache-lib@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
v8-compile-cache@^2.0.3:
version "2.3.0"

View file

@ -1,6 +1,6 @@
FROM node:14-buster-slim
RUN apt-get update && \
apt-get install -y git build-essential python pkg-config libssl-dev && \
apt-get install -y git build-essential python pkg-config libssl-dev python3-pip && \
apt-get clean
WORKDIR /edumeet
ENV DEBUG=edumeet*,mediasoup*

View file

@ -64,13 +64,17 @@ OR
### Server config
mm/configs/server/config.js
``` js
redisOptions : { host: '192.0.2.4'},
listeningPort: 80,
httpOnly: true,
trustProxy : ['192.0.2.5'],
config.yaml
``` yaml
turnAPIKey : "<key>"
turnAPIURI : "<turn url>"
listeningPort : 80
httpOnly : true
trustProxy : "192.0.2.5"
redisOptions:
host: "192.0.2.4"
port: "6379"
password: "passwd"
```
## Deploy HA proxy
@ -78,24 +82,121 @@ trustProxy : ['192.0.2.5'],
* Configure certificate / letsencrypt for `meet.example.com`
* In this example we put a complete chain and private key in /root/certificate.pem.
* Install and setup haproxy
```bash
apt install haproxy
```
* Install haproxy 2.2 (recommended)
``` bash
sudo apt-get install gnupg2 curl -y
curl https://haproxy.debian.net/bernat.debian.org.gpg | sudo apt-key add -
echo deb http://haproxy.debian.net buster-backports-2.2 main | sudo tee /etc/apt/sources.list.d/haproxy.list
sudo apt-get update
apt-get install haproxy=2.2.\*
`apt install haproxy`
sudo systemctl start haproxy
sudo systemctl enable haproxy
```
* Add to /etc/haproxy/haproxy.cfg config
``` plaintext
backend edumeet
balance url_param roomId
hash-type consistent
server mm1 192.0.2.1:80 check maxconn 2000 verify none
server mm2 192.0.2.2:80 check maxconn 2000 verify none
server mm3 192.0.2.3:80 check maxconn 2000 verify none
global
# mult thread setup
nbproc 1
nbthread 4
cpu-map auto:1/1-4 0-3
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats socket /run/haproxy.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
# An alternative list with additional directives can be obtained from
# https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
tune.ssl.default-dh-param 2048
maxconn 20000
defaults
log global
mode http
option httplog
#option logasap
#option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
maxconn 8192
backend letsmeet-room-backend
fullconn 4000
balance url_param roomId
hash-type consistent
stick-table type string len 1024 size 100k expire 8h
stick store-request url_param(roomId)
stick match url_param(roomId)
stick match url_param(state),url_dec,b64dec,field(8,'\"')
server edumeet1 192.0.2.1:80 check maxconn 2000 verify none
server edumeet2 192.0.2.2:80 check maxconn 1000 verify none
server edumeet3 192.0.2.3:80 check maxconn 1000 verify none
backend letsmeet-backend
fullconn 4000
balance leastconn
stick-table type ip size 200k expire 30m
stick on src
hash-type consistent
server edumeet1 192.0.2.1:80 check maxconn 2000 verify none
server edumeet2 192.0.2.2:80 check maxconn 1000 verify none
server edumeet3 192.0.2.3:80 check maxconn 1000 verify none
frontend letsmeet
bind *:80
bind*:443 ssl crt /etc/ssl/edumeet.example.com/edumeet.example.com.pem alpn h2,http/1.1
http-request redirect scheme https if !{ ssl_fc }
http-request add-header X-Forwarded-Proto https
stats enable
stats uri /static/stats
#stats hide-version
stats refresh 10s
stats admin if TRUE
#stats admin if LOCALHOST
stats realm Haproxy\ Statistics
stats auth admin:password
maxconn 6000
acl roomId-acl url_param(roomId) -m found
acl callback-acl path_beg /auth/callback
use_backend letsmeet-room-backend if roomId-acl || callback-acl
default_backend letsmeet-backend
frontend meet.example.com
bind 192.0.2.5:80
bind 192.0.2.5:443 ssl crt /root/certificate.pem
http-request redirect scheme https unless { ssl_fc }
reqadd X-Forwarded-Proto:\ https
default_backend edumeet
```
* Creating cert with letsencrypt :
``` bash
sudo cat /etc/letsencrypt/live/edumeet.example.com/fullchain.pem /etc/letsencrypt/live/edumeet.example.com/privkey.pem | sudo tee /etc/ssl/edumeet.example.com/edumeet.example.com.pem
```

View file

@ -119,59 +119,6 @@ module.exports =
}
},
*/
// URI and key for requesting geoip-based TURN server closest to the client
turnAPIKey : 'examplekey',
turnAPIURI : 'https://example.com/api/turn',
turnAPIparams : {
'uri_schema' : 'turn',
'transport' : 'tcp',
'ip_ver' : 'ipv4',
'servercount' : '2'
},
turnAPITimeout : 2 * 1000,
// Backup turnservers if REST fails or is not configured
backupTurnServers : [
{
urls : [
'turn:turn.example.com:443?transport=tcp'
],
username : 'example',
credential : 'example'
}
],
// bittorrent tracker: please replace this if you want a more private file sharing service inside eduMEET
// have a look at https://github.com/webtorrent/bittorrent-tracker for setup your own tracker
fileTracker : 'wss://tracker.openwebtorrent.com',
// redis server options
redisOptions : {},
// session cookie secret
cookieSecret : 'T0P-S3cR3t_cook!e',
cookieName : 'edumeet.sid',
// if you use encrypted private key the set the passphrase
tls :
{
cert : `${__dirname}/../certs/mediasoup-demo.localhost.cert.pem`,
// passphrase: 'key_password'
key : `${__dirname}/../certs/mediasoup-demo.localhost.key.pem`
},
// listening Host or IP
// If omitted listens on every IP. ("0.0.0.0" and "::")
// listeningHost: 'localhost',
// Listening port for https server.
listeningPort : 443,
// Any http request is redirected to https.
// Listening port for http server.
listeningRedirectPort : 80,
// Listens only on http, only on listeningPort
// listeningRedirectPort disabled
// use case: loadbalancer backend
httpOnly : false,
// WebServer/Express trust proxy config for httpOnly mode
// You can find more info:
// - https://expressjs.com/en/guide/behind-proxies.html
// - https://www.npmjs.com/package/proxy-addr
// use case: loadbalancer backend
trustProxy : '',
// This logger class will have the log function
// called every time there is a room created or destroyed,
// or peer created or destroyed. This would then be able

View file

@ -32,7 +32,7 @@ import {
const logger = new Logger('config');
// add network interfaces list
const ifaceWhiteListRegex = '^(eth.*)|(ens.*)|(br.*)|(wl.*)|(ww.*)';
const ifaceWhiteListRegex = '^(eth.*)|(enp.*)|(ens.*)|(br.*)|(wl.*)|(ww.*)';
// add parsers
convict.addParser([

View file

@ -1,6 +1,6 @@
{
"name": "edumeet-server",
"version": "3.5.1",
"version": "3.5.5",
"private": true,
"description": "edumeet server",
"author": "Håvar Aambø Fosstveit <h@fosstveit.net>",
@ -15,7 +15,7 @@
"main": "lib/index.js",
"scripts": {
"start": "node dist/server.js",
"build": "mkdir -p dist && find dist/* -maxdepth 0 ! -name public -exec rm -rf {} \\; && tsc && ln -s ../certs dist/certs && chmod 755 dist/server.js && ( for fileExt in yaml json toml ; do [ -f config/config.$fileExt ] && cp config/config.$fileExt dist/config/; done ) | true && touch 'dist/ __AUTO_GENERATED_CONTENT_REFRESHED_AFTER_REBUILDING!__ '",
"build": "mkdir -p dist && touch dist/tmp && find dist/* -maxdepth 0 ! -name public -exec rm -rf {} \\; && tsc && ln -s ../certs dist/certs && chmod 755 dist/server.js && ( for fileExt in yaml json toml ; do [ -f config/config.$fileExt ] && cp config/config.$fileExt dist/config/; done ) | true && touch 'dist/ __AUTO_GENERATED_CONTENT_REFRESHED_AFTER_REBUILDING!__ '",
"dev": "nodemon --exec ts-node --ignore dist/ -e js,ts server.js",
"connect": "ts-node connect.js",
"lint": "eslint ./ --ext .js,.ts; exit 0",
@ -43,7 +43,7 @@
"ims-lti": "^3.0.2",
"json5": "^2.2.0",
"jsonwebtoken": "^8.5.1",
"mediasoup": "3.9.6",
"mediasoup": "3.10.5",
"openid-client": "^3.7.3",
"passport": "^0.4.0",
"passport-local": "^1.0.0",

View file

@ -909,7 +909,7 @@ debug@2.6.9, debug@^2.6.9, debug@~2.6.0:
dependencies:
ms "2.0.0"
debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3:
debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2:
version "4.3.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
@ -923,6 +923,13 @@ debug@^3.2.7:
dependencies:
ms "^2.1.1"
debug@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
debug@~3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
@ -1481,9 +1488,9 @@ flatted@^2.0.0:
integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==
follow-redirects@^1.14.0:
version "1.14.7"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.7.tgz#2004c02eb9436eee9a21446a6477debf17e81685"
integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==
version "1.14.9"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7"
integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==
form-data@^2.5.0:
version "2.5.1"
@ -2189,16 +2196,15 @@ media-typer@0.3.0:
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
mediasoup@3.9.6:
version "3.9.6"
resolved "https://registry.yarnpkg.com/mediasoup/-/mediasoup-3.9.6.tgz#406d6e5eea9096fa55df2b890ab1c42df2547b15"
integrity sha512-eRWdsyO5m9IN3EHJ1cST4Muv+ddhZbBcvDLUGHVoRm34l5xiB/2F9H0iL7aASVSis0yWN9O/ogqEAb4J6xDDlA==
mediasoup@3.10.5:
version "3.10.5"
resolved "https://registry.yarnpkg.com/mediasoup/-/mediasoup-3.10.5.tgz#bbc0da60286b4c9e44331308249d123a0e996738"
integrity sha512-qYxJvCPcHndEP5vuIUgk+b/YjFq2vlVxX7BnYLxhTC/qYZF6103o/6J7HgwxAfLpkLLEyBq+g3nSBXxretPo/Q==
dependencies:
"@types/node" "^16.11.10"
debug "^4.3.3"
debug "^4.3.4"
h264-profile-level-id "^1.0.1"
random-number "^0.0.9"
supports-color "^9.2.1"
supports-color "^9.2.2"
uuid "^8.3.2"
merge-descriptors@1.0.1:
@ -2698,11 +2704,6 @@ random-bytes@~1.0.0:
resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b"
integrity sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=
random-number@^0.0.9:
version "0.0.9"
resolved "https://registry.yarnpkg.com/random-number/-/random-number-0.0.9.tgz#5907b96f05041807c52aed601c869524d86fbbd5"
integrity sha512-ipG3kRCREi/YQpi2A5QGcvDz1KemohovWmH6qGfboVyyGdR2t/7zQz0vFxrfxpbHQgPPdtVlUDaks3aikD1Ljw==
range-parser@~1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
@ -3154,10 +3155,10 @@ supports-color@^7.1.0:
dependencies:
has-flag "^4.0.0"
supports-color@^9.2.1:
version "9.2.1"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.2.1.tgz#599dc9d45acf74c6176e0d880bab1d7d718fe891"
integrity sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==
supports-color@^9.2.2:
version "9.3.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.3.0.tgz#cce566c5ad562eece4dfe5a4502a58efc54986a9"
integrity sha512-hJ6RYjNbcBFkpHi+ykjar+7GgHs+65Kxyw940nBLOSjaWZ13acq4A5f+gWiV5w+xfsg5MbnjDxTigLcUuljerw==
supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0"