mirror of
https://github.com/edumeet/edumeet.git
synced 2026-01-23 18:47:15 +00:00
Compare commits
No commits in common. "master" and "3.5.0-stable" have entirely different histories.
master
...
3.5.0-stab
32 changed files with 282 additions and 565 deletions
40
.github/ISSUE_TEMPLATE/bug_report.md
vendored
40
.github/ISSUE_TEMPLATE/bug_report.md
vendored
|
|
@ -1,40 +0,0 @@
|
|||
---
|
||||
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
10
.github/ISSUE_TEMPLATE/custom.md
vendored
|
|
@ -1,10 +0,0 @@
|
|||
---
|
||||
name: Custom issue template
|
||||
about: Describe this issue template's purpose here.
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
|
||||
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
|
|
@ -1,20 +0,0 @@
|
|||
---
|
||||
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.
|
||||
8
.github/workflows/develop-deb.yml
vendored
8
.github/workflows/develop-deb.yml
vendored
|
|
@ -2,7 +2,7 @@ name: Debian package
|
|||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
branches: [ develop, release-3.5.0 ]
|
||||
# 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.deb
|
||||
mv /home/runner/package.deb /home/runner/edumeet-$VERSION-beta1.deb
|
||||
|
||||
- name : Upload artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: edumeet-${{ steps.get-version.outputs.VERSION }}
|
||||
name: edumeet-${{ steps.get-version.outputs.VERSION }}-beta1
|
||||
path: "/home/runner/edumeet-*.deb"
|
||||
|
||||
- name: Add to release assets
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
tag_name: ${{ steps.get-version.outputs.VERSION }}
|
||||
tag_name: "v3.5.0-beta.1"
|
||||
files: "/home/runner/edumeet-*.deb"
|
||||
|
|
|
|||
80
.github/workflows/main.yml
vendored
Normal file
80
.github/workflows/main.yml
vendored
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
name: Deployer
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [12.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
path: edumeet
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- run: |
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get -yq install jq npm build-essential || true
|
||||
cd edumeet
|
||||
cp server/config/config.example.js server/config/config.js
|
||||
cp app/public/config/config.example.js app/public/config/config.js
|
||||
cd app
|
||||
npm install
|
||||
npm run build
|
||||
cd ../server
|
||||
cat <<< $(jq '.bundleDependencies += .dependencies' package.json) > package.json
|
||||
npm install
|
||||
npm pack
|
||||
VERSION=$(cat package.json | jq -r '.version')
|
||||
DATE=$(date)
|
||||
mkdir -p /home/runner/package
|
||||
cd /home/runner/package
|
||||
mkdir DEBIAN
|
||||
mkdir -p usr/local/src/edumeet/server
|
||||
mkdir -p etc/systemd/system/
|
||||
tar -xf /home/runner/work/***/***/***/server/***-server-$VERSION.tgz package/ 1>/dev/null 2>/dev/null || true
|
||||
mv package/* usr/local/src/edumeet/server/
|
||||
mv /home/runner/work/***/***/***/*.service etc/systemd/system/
|
||||
rm -rf package
|
||||
touch DEBIAN/md5sums
|
||||
touch DEBIAN/md5sums
|
||||
touch DEBIAN/control
|
||||
find . -type f ! -regex '.*.hg.*' ! -regex '.*?debian-binary.*' ! -regex '.*?DEBIAN.*' -printf '%P ' | xargs md5sum 1>/dev/null 2>/dev/null || true
|
||||
echo """Package: edumeet
|
||||
Version: $VERSION
|
||||
Maintainer: Mert CELEN <mcelen94@gmail.com>
|
||||
Section: admin
|
||||
Date : $DATE
|
||||
Architecture: amd64
|
||||
Priority: important
|
||||
Description: Multiparty web-meetings using mediasoup and WebRTC
|
||||
Depends: nodejs (>= 12), redis
|
||||
""" > DEBIAN/control
|
||||
echo """#!/bin/bash
|
||||
mkdir -p /etc/edumeet/
|
||||
ln -s /usr/local/src/edumeet/server/config/config.js /etc/edumeet/server-config.js || true
|
||||
ln -s /usr/local/src/edumeet/server/public/config/config.js /etc/edumeet/client-config.js || true
|
||||
systemctl daemon-reload
|
||||
systemctl enable edumeet
|
||||
echo "eduMeet multiparty meeting is installed, but you need the configure the server and client with your ip adresses in configuration files under /etc/meeting/ \n"
|
||||
echo "\n\nAfter the configuration, you can start service with 'sudo systemctl start edumeet' command.\n\n"
|
||||
""" > DEBIAN/postinst
|
||||
chmod 775 DEBIAN/postinst
|
||||
cd ../
|
||||
dpkg-deb -Zgzip --build package
|
||||
mv /home/runner/package.deb /home/runner/edumeet.deb
|
||||
- name : Release Package
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: edumeet
|
||||
path: "/home/runner/edumeet.deb"
|
||||
|
|
@ -1,12 +1,5 @@
|
|||
# Changelog
|
||||
|
||||
## 3.5.3
|
||||
Hotfix configuration issue
|
||||
## 3.5.2
|
||||
Security update for dependencies
|
||||
## 3.5.1
|
||||
* Updated Documentation
|
||||
|
||||
## 3.5.0
|
||||
|
||||
### Added
|
||||
|
|
|
|||
|
|
@ -248,7 +248,7 @@ sudo systemctl enable edumeet
|
|||
|
||||
## Load balanced installation
|
||||
|
||||
To deploy this as a load balanced cluster, have a look at [HAproxy](/docs/HAproxy.md).
|
||||
To deploy this as a load balanced cluster, have a look at [HAproxy](HAproxy.md).
|
||||
|
||||
## Learning management integration
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "edumeet",
|
||||
"version": "3.5.5",
|
||||
"version": "3.5.0",
|
||||
"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.55",
|
||||
"mediasoup-client": "^3.6.47",
|
||||
"notistack": "^0.9.5",
|
||||
"prop-types": "^15.7.2",
|
||||
"random-string": "^0.2.0",
|
||||
|
|
@ -70,7 +70,6 @@
|
|||
"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"
|
||||
},
|
||||
|
|
@ -111,6 +110,6 @@
|
|||
"eslint-webpack-plugin": "^2.5.3",
|
||||
"foreman": "^3.0.1",
|
||||
"redux-mock-store": "^1.5.3",
|
||||
"ts-node": "^10.9.1"
|
||||
"ts-node": "^10.5.0"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,9 +52,6 @@
|
|||
| 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 }}`` |
|
||||
|
|
|
|||
|
|
@ -304,15 +304,6 @@ 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',
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
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'>
|
||||
|
|
|
|||
|
|
@ -4283,7 +4283,7 @@ export default class RoomClient
|
|||
try
|
||||
{
|
||||
const device = this._webcams[videoDeviceId];
|
||||
const { resolution, aspectRatio, frameRate } = store.getState().settings;
|
||||
const { resolution, aspectRatio } = store.getState().settings;
|
||||
|
||||
if (!device)
|
||||
throw new Error('no webcam devices');
|
||||
|
|
@ -4293,8 +4293,7 @@ export default class RoomClient
|
|||
video :
|
||||
{
|
||||
deviceId : { ideal: videoDeviceId },
|
||||
...getVideoConstrains(resolution, aspectRatio),
|
||||
frameRate
|
||||
...getVideoConstrains(resolution, aspectRatio)
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -349,32 +349,21 @@ const Peer = (props) =>
|
|||
{
|
||||
const handler = setTimeout(() =>
|
||||
{
|
||||
const consumers = [];
|
||||
const consumer = webcamConsumer || screenConsumer;
|
||||
|
||||
if (webcamConsumer)
|
||||
consumers.push(webcamConsumer);
|
||||
if (!consumer)
|
||||
return;
|
||||
|
||||
if (screenConsumer)
|
||||
consumers.push(screenConsumer);
|
||||
|
||||
extraVideoConsumers.map((consumer) =>
|
||||
if (windowConsumer === consumer.id)
|
||||
{
|
||||
consumers.push(consumer);
|
||||
});
|
||||
|
||||
consumers.forEach((consumer) =>
|
||||
// if playing in external window, set the maximum quality levels
|
||||
roomClient.setConsumerPreferredLayersMax(consumer);
|
||||
}
|
||||
else if (enableLayersSwitch && consumer?.type !== 'simple'
|
||||
&& fullScreenConsumer !== consumer.id)
|
||||
{
|
||||
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);
|
||||
}
|
||||
});
|
||||
roomClient.adaptConsumerPreferredLayers(consumer, width, height);
|
||||
}
|
||||
}, 1000);
|
||||
|
||||
return () => { clearTimeout(handler); };
|
||||
|
|
@ -382,7 +371,6 @@ const Peer = (props) =>
|
|||
enableLayersSwitch,
|
||||
webcamConsumer,
|
||||
screenConsumer,
|
||||
extraVideoConsumers,
|
||||
windowConsumer,
|
||||
fullScreenConsumer,
|
||||
roomClient, width, height
|
||||
|
|
|
|||
|
|
@ -39,7 +39,6 @@ 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) =>
|
||||
({
|
||||
|
|
@ -187,6 +186,7 @@ const JoinDialog = ({
|
|||
|
||||
}) =>
|
||||
{
|
||||
|
||||
const location = useLocation();
|
||||
|
||||
const history = useHistory();
|
||||
|
|
@ -671,51 +671,6 @@ 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>
|
||||
|
|
|
|||
|
|
@ -437,7 +437,6 @@ class VideoView extends React.PureComponent
|
|||
localRecordingState==='resume'
|
||||
)&&
|
||||
(
|
||||
recordingConsents!==undefined &&
|
||||
!recordingConsents.includes(peer.id)
|
||||
)
|
||||
) ? '':displayName
|
||||
|
|
@ -460,7 +459,6 @@ class VideoView extends React.PureComponent
|
|||
localRecordingState==='resume'
|
||||
)&&
|
||||
(
|
||||
recordingConsents!==undefined &&
|
||||
!recordingConsents.includes(peer.id)
|
||||
)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -498,24 +498,6 @@ 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.',
|
||||
|
|
|
|||
|
|
@ -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,7 +15,6 @@ 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';
|
||||
|
|
@ -98,25 +97,6 @@ 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;
|
||||
|
|
@ -238,16 +218,6 @@ function run()
|
|||
basePath
|
||||
});
|
||||
|
||||
if (hideNoVideoParticipants === 'true')
|
||||
{
|
||||
roomClient.setHideNoVideoParticipants(true);
|
||||
}
|
||||
|
||||
if (hideSelfView === 'true')
|
||||
{
|
||||
store.dispatch(roomActions.setHideSelfView(hideSelfView));
|
||||
}
|
||||
|
||||
global.CLIENT = roomClient;
|
||||
|
||||
render(
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"configDocumentation.title": "Edumeet 配置",
|
||||
"configError.bodyText": "Edumeet 配置存在如下错误:",
|
||||
"configError.link": "查看配置文档",
|
||||
"configError.title": "配置错误",
|
||||
"configDocumentation.title": null,
|
||||
"configError.bodyText": null,
|
||||
"configError.link": null,
|
||||
"configError.title": null,
|
||||
"device.activateAudio": "激活音频",
|
||||
"device.audioUnsupported": "音频不受支持",
|
||||
"device.muteAudio": "静音",
|
||||
"device.options": "设置",
|
||||
"device.options": null,
|
||||
"device.screenSharingUnsupported": "不支持屏幕共享",
|
||||
"device.startScreenSharing": "开始屏幕共享",
|
||||
"device.startVideo": "开始视频",
|
||||
|
|
@ -16,12 +16,12 @@
|
|||
"device.videoUnsupported": "视频不受支持",
|
||||
"devices.cameraDisconnected": "相机已断开连接",
|
||||
"devices.cameraError": "访问相机时发生错误",
|
||||
"devices.chooseMedia": "选择媒体",
|
||||
"devices.chooseMedia": null,
|
||||
"devices.devicesChanged": "您的设备已更改,请在设置对话框中配置设备",
|
||||
"devices.disableBothMicrophoneAndCamera": "关闭麦克风和摄像头",
|
||||
"devices.enableBothMicrophoneAndCamera": "打开麦克风和摄像头",
|
||||
"devices.enableOnlyCamera": "仅打开摄像头",
|
||||
"devices.enableOnlyMicrophone": "仅打开麦克风",
|
||||
"devices.disableBothMicrophoneAndCamera": null,
|
||||
"devices.enableBothMicrophoneAndCamera": null,
|
||||
"devices.enableOnlyCamera": null,
|
||||
"devices.enableOnlyMicrophone": null,
|
||||
"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": "访客",
|
||||
"label.guest": null,
|
||||
"label.high": "高 (HD)",
|
||||
"label.italic": null,
|
||||
"label.join": "入会",
|
||||
"label.join": null,
|
||||
"label.leave": "离开",
|
||||
"label.leaveWithSavingChat": null,
|
||||
"label.login": null,
|
||||
|
|
@ -252,4 +252,4 @@
|
|||
"unsupportedBrowser.bodyText": null,
|
||||
"unsupportedBrowser.titleUnsupportedBrowser": null,
|
||||
"unsupportedBrowser.titlewebrtcUnavailable": null
|
||||
}
|
||||
}
|
||||
146
app/yarn.lock
146
app/yarn.lock
|
|
@ -1209,12 +1209,17 @@
|
|||
exec-sh "^0.3.2"
|
||||
minimist "^1.2.0"
|
||||
|
||||
"@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==
|
||||
"@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==
|
||||
dependencies:
|
||||
"@jridgewell/trace-mapping" "0.3.9"
|
||||
"@cspotcode/source-map-consumer" "0.8.0"
|
||||
|
||||
"@csstools/convert-colors@^1.4.0":
|
||||
version "1.4.0"
|
||||
|
|
@ -1514,24 +1519,6 @@
|
|||
"@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"
|
||||
|
|
@ -1944,11 +1931,6 @@
|
|||
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"
|
||||
|
|
@ -1974,6 +1956,11 @@
|
|||
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"
|
||||
|
|
@ -2844,10 +2831,10 @@ autoprefixer@^9.6.1:
|
|||
postcss "^7.0.32"
|
||||
postcss-value-parser "^4.1.0"
|
||||
|
||||
awaitqueue@^2.4.0:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/awaitqueue/-/awaitqueue-2.4.0.tgz#beb9a2b563b4817921f21c09cca2cdbb0d5989d4"
|
||||
integrity sha512-9nTnPxVuxiuKFTHslm9ltnekUECJidOQ5kE6JpZUH77KrKqStQuWUW7JPB2GJZ7rOwWLcbToHiIXle/nJe1VpQ==
|
||||
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==
|
||||
|
||||
axe-core@^4.0.2:
|
||||
version "4.2.1"
|
||||
|
|
@ -4098,11 +4085,6 @@ 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"
|
||||
|
|
@ -4576,10 +4558,10 @@ debug@^3.1.1, debug@^3.2.6, 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==
|
||||
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==
|
||||
dependencies:
|
||||
ms "2.1.2"
|
||||
|
||||
|
|
@ -5923,9 +5905,9 @@ flush-write-stream@^1.0.0:
|
|||
readable-stream "^2.3.6"
|
||||
|
||||
follow-redirects@^1.0.0:
|
||||
version "1.14.9"
|
||||
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7"
|
||||
integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43"
|
||||
integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==
|
||||
|
||||
for-in@^1.0.2:
|
||||
version "1.0.2"
|
||||
|
|
@ -8419,21 +8401,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.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==
|
||||
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==
|
||||
dependencies:
|
||||
"@types/debug" "^4.1.7"
|
||||
awaitqueue "^2.4.0"
|
||||
"@types/events" "^3.0.0"
|
||||
awaitqueue "^2.3.3"
|
||||
bowser "^2.11.0"
|
||||
debug "^4.3.4"
|
||||
debug "^4.3.3"
|
||||
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.3"
|
||||
uuid "^3.4.0"
|
||||
supports-color "^9.2.1"
|
||||
|
||||
mediasource@^2.2.2, mediasource@^2.3.0:
|
||||
version "2.4.0"
|
||||
|
|
@ -8631,9 +8613,9 @@ minipass-pipeline@^1.2.2:
|
|||
minipass "^3.0.0"
|
||||
|
||||
minipass@^3.0.0, minipass@^3.1.1:
|
||||
version "3.1.6"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee"
|
||||
integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd"
|
||||
integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
|
|
@ -11636,9 +11618,9 @@ simple-concat@^1.0.0:
|
|||
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
|
||||
|
||||
simple-get@^3.0.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.1.tgz#cc7ba77cfbe761036fbfce3d021af25fc5584d55"
|
||||
integrity sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==
|
||||
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==
|
||||
dependencies:
|
||||
decompress-response "^4.2.0"
|
||||
once "^1.3.1"
|
||||
|
|
@ -12241,10 +12223,10 @@ supports-color@^7.0.0, supports-color@^7.1.0:
|
|||
dependencies:
|
||||
has-flag "^4.0.0"
|
||||
|
||||
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-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-hyperlinks@^2.0.0:
|
||||
version "2.2.0"
|
||||
|
|
@ -12306,9 +12288,9 @@ tapable@^1.0.0, tapable@^1.1.3:
|
|||
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
|
||||
|
||||
tar@^6.0.2:
|
||||
version "6.1.11"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621"
|
||||
integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83"
|
||||
integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==
|
||||
dependencies:
|
||||
chownr "^2.0.0"
|
||||
fs-minipass "^2.0.0"
|
||||
|
|
@ -12558,12 +12540,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.9.1:
|
||||
version "10.9.1"
|
||||
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b"
|
||||
integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==
|
||||
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==
|
||||
dependencies:
|
||||
"@cspotcode/source-map-support" "^0.8.0"
|
||||
"@cspotcode/source-map-support" "0.7.0"
|
||||
"@tsconfig/node10" "^1.0.7"
|
||||
"@tsconfig/node12" "^1.0.7"
|
||||
"@tsconfig/node14" "^1.0.0"
|
||||
|
|
@ -12574,7 +12556,7 @@ ts-node@^10.9.1:
|
|||
create-require "^1.1.0"
|
||||
diff "^4.0.1"
|
||||
make-error "^1.1.1"
|
||||
v8-compile-cache-lib "^3.0.1"
|
||||
v8-compile-cache-lib "^3.0.0"
|
||||
yn "3.1.1"
|
||||
|
||||
ts-pnp@1.2.0, ts-pnp@^1.1.6:
|
||||
|
|
@ -12789,14 +12771,6 @@ 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"
|
||||
|
|
@ -12864,9 +12838,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.10"
|
||||
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1"
|
||||
integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b"
|
||||
integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==
|
||||
dependencies:
|
||||
querystringify "^2.1.1"
|
||||
requires-port "^1.0.0"
|
||||
|
|
@ -12967,10 +12941,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.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-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@^2.0.3:
|
||||
version "2.3.0"
|
||||
|
|
|
|||
|
|
@ -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 python3-pip && \
|
||||
apt-get install -y git build-essential python pkg-config libssl-dev && \
|
||||
apt-get clean
|
||||
WORKDIR /edumeet
|
||||
ENV DEBUG=edumeet*,mediasoup*
|
||||
|
|
|
|||
141
docs/HAproxy.md
141
docs/HAproxy.md
|
|
@ -64,17 +64,13 @@ OR
|
|||
|
||||
### Server config
|
||||
|
||||
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"
|
||||
mm/configs/server/config.js
|
||||
|
||||
``` js
|
||||
redisOptions : { host: '192.0.2.4'},
|
||||
listeningPort: 80,
|
||||
httpOnly: true,
|
||||
trustProxy : ['192.0.2.5'],
|
||||
```
|
||||
|
||||
## Deploy HA proxy
|
||||
|
|
@ -82,121 +78,24 @@ redisOptions:
|
|||
* 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.\*
|
||||
|
||||
sudo systemctl start haproxy
|
||||
sudo systemctl enable haproxy
|
||||
```
|
||||
`apt install haproxy`
|
||||
|
||||
* Add to /etc/haproxy/haproxy.cfg config
|
||||
|
||||
``` plaintext
|
||||
backend edumeet
|
||||
balance url_param roomId
|
||||
hash-type consistent
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
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
|
||||
```
|
||||
|
|
|
|||
|
|
@ -1,32 +0,0 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIFhTCCA22gAwIBAgIUKWAvYO7nVQFx8sxCwR4K8hlj/GEwDQYJKoZIhvcNAQEL
|
||||
BQAwUjELMAkGA1UEBhMCRVUxEDAOBgNVBAgMB2VkdW1lZXQxDTALBgNVBAcMBGRl
|
||||
bW8xEDAOBgNVBAoMB2VkdW1lZXQxEDAOBgNVBAMMB2VkdW1lZXQwHhcNMjIwMjI2
|
||||
MjIxNzQ0WhcNMjMwMjI2MjIxNzQ0WjBSMQswCQYDVQQGEwJFVTEQMA4GA1UECAwH
|
||||
ZWR1bWVldDENMAsGA1UEBwwEZGVtbzEQMA4GA1UECgwHZWR1bWVldDEQMA4GA1UE
|
||||
AwwHZWR1bWVldDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALNo8HRJ
|
||||
LVKW2ngMjAoFT6Dh1gP0eivscqHKEdc4LHWtoYjMpUNPbXH2E3+sc5NHTmYUm+e9
|
||||
/D+xJ3vF9EOB4W7IY2EROPeLF3mxSGizJMst3/p7rbOG+1qErODd1o21oy1fsJHS
|
||||
1HB1udeYKRyTpsGrlc8faMGBnwkqaJm9SwuUU75sreTSdDwZEVGs49OSGZPKo42S
|
||||
J2gcYbEDUw/cUZRcueck/fN5Wx/05TWsMUKZ/kbsFgWrdfrZvMTfyrs0XgBTRUc0
|
||||
P9IdQAHRkOtFQZ18xAgsbJ/9KFgz429lb4BZrEZEjVOrhQ1Vq1H55rNb5+urFzFP
|
||||
xFBqJGA1I4I3D6pcP+RIphWEbDGWelBQ4L/PaLRIJw6ShdpEfTPZYjZro7kbMxJC
|
||||
JEoqrJChu0JO+l+N8qtLkpnghgrI8I5FfZKxDEuGHk6YnQWIeusY9PZ91gyFpy1S
|
||||
Y2Kq8e4mpuF/jO/857UXo2JQhGsRPItHvj9AeqmjjZr2dm1mIqWGTmPyNpLm5sWA
|
||||
bsFtLgBTKfpgErugh6KvK15jWVhl3i0Ls9C5feU2wU7dk61qH1RiOU8gBeZiYW+6
|
||||
kD8WSddd8PEiYHMZ0peMMJoFfbl+02uCLi4LACWzwl2Gm9JkUgL7vX0SOA96F2f+
|
||||
+QyLLvIB+nhhMaitw0QvT+Hugab4yXBJBFvZAgMBAAGjUzBRMB0GA1UdDgQWBBQy
|
||||
a2ibEZ7zhfBF/KZNUrBO0wIIODAfBgNVHSMEGDAWgBQya2ibEZ7zhfBF/KZNUrBO
|
||||
0wIIODAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQAKbNSY1dnm
|
||||
gj36y4+XJ2CC7o3JtY17sjCRpQxgj/vIoX72OyV5HYbkwGq9k4jJ00fIEuzojuGa
|
||||
i4ZuxYgVfdZG2W2/tI8H8G/JfNkolm2sOX8SUmAEbUsgCiT32Er/y9Asm0UY/sWA
|
||||
t6TPV0dxrcH58yHOU0Wgu2MPcaidBxc3MAE12MHoIOk4ioCrgvJQyCszJRBSTSd1
|
||||
UO6L1pMBzV6/ElxalU64lEO9/v25KBDAeI96g5jEYIEz9Wo1xLeflU3Ug6/XyytM
|
||||
4egYwKZpHNKzUOTr1eq1tBbaRY4nBGNVR0MIwSskgahzCR1ieYPvSXGceme9a4Ig
|
||||
bXkFuOo+xEVFXCgdImK+TuDEhOlH/ioP8v9zUqwXHGWzO95gtY2lnPufFJjSvXL3
|
||||
BicYHBQ2G37rcv7cDLF3JuJRzn7PrWtBB2OOFvixQHP9H7ynOMf00myFUG8q4isC
|
||||
q1/ZP79/uEB3Aq+1cMUTaoDt7uFIqSTowQiOi6aInW6eqeToJETR0wVIGkOgieMC
|
||||
+qgS1lKQGqKNOgsuz4BQub/lr9jhOrmDMNGI82ZNNmRlLJgN8zxf5ZCnO7OF+WCr
|
||||
+9vzJ8MJa4gO9EAWWeJQi9hyrmLIY9mA1pOhPCcROXhc5eyz/Q9q2AWSZlmDeN3e
|
||||
UWbGZK1XT8BAIEcpJZczbYt/XJKnQ8K2HA==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
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
|
||||
3FD+CVuiwTatCHF5ABS4cF2dhQrzIuQY
|
||||
-----END PRIVATE KEY-----
|
||||
20
server/certs/mediasoup-demo.localhost.cert.pem
Normal file
20
server/certs/mediasoup-demo.localhost.cert.pem
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIDTTCCAjWgAwIBAgIEWPyBpzANBgkqhkiG9w0BAQUFADBQMSEwHwYDVQQDDBht
|
||||
ZWRpYXNvdXAtZGVtby5sb2NhbGhvc3QxFzAVBgNVBAoMDm1lZGlhc291cC1kZW1v
|
||||
MRIwEAYDVQQLDAltZWRpYXNvdXAwHhcNMTcwNDIyMTAyNzU1WhcNMzcwNDE4MTAy
|
||||
NzU1WjBQMSEwHwYDVQQDDBhtZWRpYXNvdXAtZGVtby5sb2NhbGhvc3QxFzAVBgNV
|
||||
BAoMDm1lZGlhc291cC1kZW1vMRIwEAYDVQQLDAltZWRpYXNvdXAwggEiMA0GCSqG
|
||||
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCynyO1szmonG3dk+SSQflM5DqzBNTI8ufA
|
||||
9Za8ltCmq211y6N9cjhKexHS/Eiu8x907QFNgzcagVgrPAA7XJJdckoupKsf4Qrk
|
||||
wWrpW7s/nJV2H04oIShAdWWbVckRhMLzdz+VWV0rM4AtjBxYu89B3OH9C1p4uYGH
|
||||
3i4/E147gmk+NaYdddUhYbKYTBhjtjrC2IN/lHT+VfGX8yJ0q0J9Pv6B+17pYJ1P
|
||||
QAyGhgzmvvi500t1Ke42EI7QOYAGzOw7S/zNl7lBVmXdQGmpGipD7sMVg56txNmt
|
||||
7RRETaaQ5uNpCxkBcJdIX/DzGV9xNKFoMLm1GUEdTY1RnM7jN0HNAgMBAAGjLzAt
|
||||
MAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFDazfBdo/7PNIfarcfMY6txrxQgoMA0G
|
||||
CSqGSIb3DQEBBQUAA4IBAQCtqv4Wsnp658HxYyDBxX6CnFpnNfMDqeE8scFeihmX
|
||||
X3AtJwWMWZJpOX26eOlVqee1h3QyTmvnITau+1Sphttt6EYoHBBHC5It4sCV/kwm
|
||||
6iiKKah0uxlXUyoj0ylRMwBA16b922OXm8ozDzo3FQWASLstYaUQf1kJtLQimGrH
|
||||
a4YYiQtRkCO7NvGjaHS8zwmkUdOy8mE1sXol8CiiwCJPGF5vUQMQzj1zqOhQEPLM
|
||||
44XCmM1CawTfFLhwmgZpPPzYCDMfEz1tF5M/ODOtSTytGoa0H2q4YpXVCiftAQV5
|
||||
fpSOlyqYaVk7oBkrHS6I6n58MATfuKcPn5YMJ8S/64u1
|
||||
-----END CERTIFICATE-----
|
||||
27
server/certs/mediasoup-demo.localhost.key.pem
Normal file
27
server/certs/mediasoup-demo.localhost.key.pem
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAsp8jtbM5qJxt3ZPkkkH5TOQ6swTUyPLnwPWWvJbQpqttdcuj
|
||||
fXI4SnsR0vxIrvMfdO0BTYM3GoFYKzwAO1ySXXJKLqSrH+EK5MFq6Vu7P5yVdh9O
|
||||
KCEoQHVlm1XJEYTC83c/lVldKzOALYwcWLvPQdzh/QtaeLmBh94uPxNeO4JpPjWm
|
||||
HXXVIWGymEwYY7Y6wtiDf5R0/lXxl/MidKtCfT7+gfte6WCdT0AMhoYM5r74udNL
|
||||
dSnuNhCO0DmABszsO0v8zZe5QVZl3UBpqRoqQ+7DFYOercTZre0URE2mkObjaQsZ
|
||||
AXCXSF/w8xlfcTShaDC5tRlBHU2NUZzO4zdBzQIDAQABAoIBABLK2WfxbjyGEK0C
|
||||
NUcJ99+WF3LkLDrkC2vqqqw2tccDPCXrgczd6nwzjIGFF2SIoaOcl8l+55o7R3ps
|
||||
+p1ENQXt004q9vIIrCu7CbN5ei7MG5Fs470nF+QINeNs2BWmwRf6UM82sq2r4m1o
|
||||
U0cmozyLr57+xcrzwWP5BSaPtBdQiPjzML7E4PIg9WHbUhYjtgc90a0ruHhp9rlR
|
||||
QbFsxX9KMcTeJN+pQA+dJWlJrP4EuQurIyupl2zx+XLBzb9j4pL9wlklu3IFI6v+
|
||||
k+FVTVKXqjndanCbeOvPTli01ILng5UNUEsleWbuvFLuiXlSkduhDVBWECmNxJIR
|
||||
VCP46EECgYEA6HYNBSyb1NtxXx0Pv2Itg4TbRSP1vQOoQjJzBjrE6FYQJf6lOgMn
|
||||
sQJFGmZMXiKcyG729Ntw3gvFjnk25V4DNsK1mbLy9cBO8ETMpm2NfAt9QnH40rmp
|
||||
nd9cgu6v3AFvlBwNJAGsGRFDgshExeQlY28aQy5FevsHE/wc3UpDfRECgYEAxLVw
|
||||
ocJX/PfvhwW8S0neGtJ4n8h3MLczOxAbHulG44aTwijSIBRxS1E0h+w0jG8Lwr/O
|
||||
518RpevKhcoGQtf0XuRu1TP2UAtF/rSflCg8a/zHUBen5N2loOWc7Pd9S71klDoi
|
||||
en7d1NIUZq4Cljb1D1UYW9Ek6wQ9tQFe5EtaKP0CgYAB+N5raNF5oNL5Z5m2mfKg
|
||||
5wOlNoTjMaC/zwXCy8TX48MHT32/XD999PL5Il0Lf2etG6Pkt+fhOmBWsRiSIZYN
|
||||
ZOF9iFMfWp5Q04SY9Nz6bG6HncfqocCaokZ6pePADhMQQpyp7Ym0PL1B4skSlLjs
|
||||
ewjSARZ90JtixATKq9KewQKBgB1T294SJqItqQWdgkxLUBT5qkhQUAzwU3AL369F
|
||||
Im+Lwf3hripgQd/z1HwraE5DxCIeDNAMKYpuVDyMOVC/98wqDKg23hNjCuWFsoEZ
|
||||
WqDTCDhVvo9tyGLruPDPmVuweg1reXZ/8bzoMWh5qyMQQIsvqbkOvo1XjYeuE6K/
|
||||
5UpVAoGBAIvYtZi1a2UFhJmKNaa0dnOWhLAtWjsOh7+k/nM36Zgl1/W7veWD3yiA
|
||||
HTbyFYK0Rq696OAlVemEVNVEm4bgS2reEJHWYwrQBc07iYVww+qWkocKUVfNmuvd
|
||||
BUx/QnIKZAhFpDFYLoLUddnxOsLJd4CiuXeVEaLsLZ+eZcIlzWPc
|
||||
-----END RSA PRIVATE KEY-----
|
||||
|
|
@ -16,8 +16,8 @@
|
|||
| redisOptions.password | Redis server password. | `"string"` | ``""`` |
|
||||
| cookieSecret | Session cookie secret. | `"string"` | ``"T0P-S3cR3t_cook!e"`` |
|
||||
| cookieName | Session cookie name. | `"string"` | ``"edumeet.sid"`` |
|
||||
| tls.cert | SSL certificate path. | `"string"` | ``"./certs/edumeet-demo-cert.pem"`` |
|
||||
| tls.key | SSL key path. | `"string"` | ``"./certs/edumeet-demo-key.pem"`` |
|
||||
| tls.cert | SSL certificate path. | `"string"` | ``"./certs/mediasoup-demo.localhost.cert.pem"`` |
|
||||
| tls.key | SSL key path. | `"string"` | ``"./certs/mediasoup-demo.localhost.key.pem"`` |
|
||||
| listeningHost | The listening Host or IP address. | `"string"` | ``"0.0.0.0"`` |
|
||||
| listeningPort | The HTTPS listening port. | `"port"` | ``443`` |
|
||||
| listeningRedirectPort | The HTTP server listening port used for redirecting any HTTP request to HTTPS. If 0, the redirect server is disabled. | `"port"` | ``8080`` |
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@
|
|||
"fileTracker" : "wss://tracker.openwebtorrent.com",
|
||||
|
||||
"tls" : {
|
||||
"cert" : "./certs/edumeet-demo-cert.pem",
|
||||
"key" : "./certs/edumeet-demo-key.pem"
|
||||
"cert" : "/opt/edumeet/server/certs/cert.pem",
|
||||
"key" : "/opt/edumeet/server/certs/privkey.pem"
|
||||
},
|
||||
|
||||
"turnAPIKey" : "Your API key",
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ turnAPIKey = "Your API key"
|
|||
turnAPIURI = "https://host.domain.tld/turn"
|
||||
|
||||
[tls]
|
||||
cert = "./certs/edumeet-demo-cert.pem"
|
||||
key = "./certs/edumeet-demo-key.pem"
|
||||
cert = "/opt/edumeet/server/certs/cert.pem"
|
||||
key = "/opt/edumeet/server/certs/privkey.pem"
|
||||
|
||||
[backupTurnServers]
|
||||
urls = [ "turn:host.domain.tld:443?transport=tcp" ]
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
listeningPort: 443
|
||||
listeningHost: host.domain.tld
|
||||
|
||||
fileTracker: "wss://tracker.openwebtorrent.com"
|
||||
fileTracker" : "wss://tracker.openwebtorrent.com"
|
||||
|
||||
tls:
|
||||
cert: ./certs/edumeet-demo-cert.pem
|
||||
key: ./certs/edumeet-demo-key.pem
|
||||
key: /opt/edumeet/server/certs/privkey.pem
|
||||
cert: /opt/edumeet/server/certs/cert.pem
|
||||
|
||||
turnAPIURI: "https://host.domain.tld/turn"
|
||||
turnAPIKey: "Your API key"
|
||||
|
|
@ -32,3 +32,4 @@ mediasoup:
|
|||
listenIps:
|
||||
- ip: "PUBLIC_IP_ADDRESS"
|
||||
announcedIp: ""
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ import {
|
|||
const logger = new Logger('config');
|
||||
|
||||
// add network interfaces list
|
||||
const ifaceWhiteListRegex = '^(eth.*)|(enp.*)|(ens.*)|(br.*)|(wl.*)|(ww.*)';
|
||||
const ifaceWhiteListRegex = '^(eth.*)|(ens.*)|(br.*)|(wl.*)|(ww.*)';
|
||||
|
||||
// add parsers
|
||||
convict.addParser([
|
||||
|
|
@ -184,12 +184,12 @@ const configSchema = convict({
|
|||
cert : {
|
||||
doc : 'SSL certificate path.',
|
||||
format : String,
|
||||
default : './certs/edumeet-demo-cert.pem'
|
||||
default : './certs/mediasoup-demo.localhost.cert.pem'
|
||||
},
|
||||
key : {
|
||||
doc : 'SSL key path.',
|
||||
format : String,
|
||||
default : './certs/edumeet-demo-key.pem'
|
||||
default : './certs/mediasoup-demo.localhost.key.pem'
|
||||
}
|
||||
},
|
||||
listeningHost : {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "edumeet-server",
|
||||
"version": "3.5.5",
|
||||
"version": "3.5.0",
|
||||
"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 && 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!__ '",
|
||||
"build": "mkdir -p dist && find dist/* -maxdepth 0 ! -name public -exec rm -rf {} \\; && tsc && ln -s ../certs dist/certs && chmod 755 dist/server.js && ( [ -f config/config.yaml ] && cp config/config.yaml dist/config/ ) | 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.10.5",
|
||||
"mediasoup": "3.9.6",
|
||||
"openid-client": "^3.7.3",
|
||||
"passport": "^0.4.0",
|
||||
"passport-local": "^1.0.0",
|
||||
|
|
|
|||
|
|
@ -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, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, 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==
|
||||
|
|
@ -923,13 +923,6 @@ 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"
|
||||
|
|
@ -1488,9 +1481,9 @@ flatted@^2.0.0:
|
|||
integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==
|
||||
|
||||
follow-redirects@^1.14.0:
|
||||
version "1.14.9"
|
||||
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7"
|
||||
integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==
|
||||
version "1.14.7"
|
||||
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.7.tgz#2004c02eb9436eee9a21446a6477debf17e81685"
|
||||
integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==
|
||||
|
||||
form-data@^2.5.0:
|
||||
version "2.5.1"
|
||||
|
|
@ -2196,15 +2189,16 @@ 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.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==
|
||||
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==
|
||||
dependencies:
|
||||
"@types/node" "^16.11.10"
|
||||
debug "^4.3.4"
|
||||
debug "^4.3.3"
|
||||
h264-profile-level-id "^1.0.1"
|
||||
supports-color "^9.2.2"
|
||||
random-number "^0.0.9"
|
||||
supports-color "^9.2.1"
|
||||
uuid "^8.3.2"
|
||||
|
||||
merge-descriptors@1.0.1:
|
||||
|
|
@ -2704,6 +2698,11 @@ 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"
|
||||
|
|
@ -3155,10 +3154,10 @@ supports-color@^7.1.0:
|
|||
dependencies:
|
||||
has-flag "^4.0.0"
|
||||
|
||||
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-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-preserve-symlinks-flag@^1.0.0:
|
||||
version "1.0.0"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue