diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 75dec161..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -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. diff --git a/.github/ISSUE_TEMPLATE/custom.md b/.github/ISSUE_TEMPLATE/custom.md deleted file mode 100644 index 48d5f81f..00000000 --- a/.github/ISSUE_TEMPLATE/custom.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: Custom issue template -about: Describe this issue template's purpose here. -title: '' -labels: '' -assignees: '' - ---- - - diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index bbcbbe7d..00000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -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. diff --git a/.github/workflows/develop-deb.yml b/.github/workflows/develop-deb.yml index 5953ab07..b9435f05 100644 --- a/.github/workflows/develop-deb.yml +++ b/.github/workflows/develop-deb.yml @@ -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" diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..f5dfbe7d --- /dev/null +++ b/.github/workflows/main.yml @@ -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 + 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" diff --git a/CHANGELOG.md b/CHANGELOG.md index 67f98c91..39bb1573 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/README.md b/README.md index 269dfb6a..e32a6384 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/app/package.json b/app/package.json index 579676f4..a4c8f8e3 100644 --- a/app/package.json +++ b/app/package.json @@ -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 ", @@ -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" } } diff --git a/app/public/config/README.md b/app/public/config/README.md index d5a233a4..2b59e31f 100644 --- a/app/public/config/README.md +++ b/app/public/config/README.md @@ -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 }}`` | diff --git a/app/public/config/config.example.js b/app/public/config/config.example.js index a09f5a1b..6cd51625 100644 --- a/app/public/config/config.example.js +++ b/app/public/config/config.example.js @@ -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', diff --git a/app/public/index.html b/app/public/index.html index 966bd069..0060d0fb 100644 --- a/app/public/index.html +++ b/app/public/index.html @@ -7,7 +7,6 @@ content='width=device-width, initial-scale=1, shrink-to-fit=no' /> - diff --git a/app/src/RoomClient.js b/app/src/RoomClient.js index 121f3287..dd2f7f87 100644 --- a/app/src/RoomClient.js +++ b/app/src/RoomClient.js @@ -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) } }); diff --git a/app/src/components/Containers/Peer.js b/app/src/components/Containers/Peer.js index 5546f509..3a07d4b9 100644 --- a/app/src/components/Containers/Peer.js +++ b/app/src/components/Containers/Peer.js @@ -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 diff --git a/app/src/components/JoinDialog.js b/app/src/components/JoinDialog.js index dd070d00..2346d686 100644 --- a/app/src/components/JoinDialog.js +++ b/app/src/components/JoinDialog.js @@ -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 = ({ - { config.infoTooltipText!=='' && - -
- - { config.infoTooltipLink!=='' && - {config.infoTooltipText} - } - - { config.infoTooltipLink==='' && -

{config.infoTooltipText}

- } -
- } - { config.infoTooltipDesc!=='' && -
- {config.infoTooltipDesc} -
- } {/* {authType === 'auth' && !loggedIn && diff --git a/app/src/components/VideoContainers/VideoView.js b/app/src/components/VideoContainers/VideoView.js index 7d7f3969..261ca0e7 100644 --- a/app/src/components/VideoContainers/VideoView.js +++ b/app/src/components/VideoContainers/VideoView.js @@ -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) ) ) diff --git a/app/src/config.ts b/app/src/config.ts index 402f6cd4..c0a0eab4 100644 --- a/app/src/config.ts +++ b/app/src/config.ts @@ -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.', diff --git a/app/src/index.js b/app/src/index.js index 39a207df..2ab358dd 100644 --- a/app/src/index.js +++ b/app/src/index.js @@ -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( diff --git a/app/src/intl/translations/cn.json b/app/src/intl/translations/cn.json index c38619d4..2ce8c456 100644 --- a/app/src/intl/translations/cn.json +++ b/app/src/intl/translations/cn.json @@ -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 -} +} \ No newline at end of file diff --git a/app/yarn.lock b/app/yarn.lock index a3a0e5ad..3a563018 100644 --- a/app/yarn.lock +++ b/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" diff --git a/compose/edumeet/Dockerfile b/compose/edumeet/Dockerfile index 58ebd82b..2e801cb6 100644 --- a/compose/edumeet/Dockerfile +++ b/compose/edumeet/Dockerfile @@ -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* diff --git a/docs/HAproxy.md b/docs/HAproxy.md index 14dc05b9..2166f393 100644 --- a/docs/HAproxy.md +++ b/docs/HAproxy.md @@ -64,17 +64,13 @@ OR ### Server config -config.yaml -``` yaml -turnAPIKey : "" -turnAPIURI : "" -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 -``` diff --git a/server/certs/edumeet-demo-cert.pem b/server/certs/edumeet-demo-cert.pem deleted file mode 100644 index 444331fc..00000000 --- a/server/certs/edumeet-demo-cert.pem +++ /dev/null @@ -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----- diff --git a/server/certs/edumeet-demo-key.pem b/server/certs/edumeet-demo-key.pem deleted file mode 100644 index e39319f0..00000000 --- a/server/certs/edumeet-demo-key.pem +++ /dev/null @@ -1,52 +0,0 @@ ------BEGIN PRIVATE KEY----- -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 -3FD+CVuiwTatCHF5ABS4cF2dhQrzIuQY ------END PRIVATE KEY----- diff --git a/server/certs/mediasoup-demo.localhost.cert.pem b/server/certs/mediasoup-demo.localhost.cert.pem new file mode 100644 index 00000000..0d627583 --- /dev/null +++ b/server/certs/mediasoup-demo.localhost.cert.pem @@ -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----- diff --git a/server/certs/mediasoup-demo.localhost.key.pem b/server/certs/mediasoup-demo.localhost.key.pem new file mode 100644 index 00000000..15840209 --- /dev/null +++ b/server/certs/mediasoup-demo.localhost.key.pem @@ -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----- diff --git a/server/config/README.md b/server/config/README.md index da6e5d78..abcd2d3e 100644 --- a/server/config/README.md +++ b/server/config/README.md @@ -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`` | diff --git a/server/config/config.example.json b/server/config/config.example.json index be10c74b..780b3a4a 100644 --- a/server/config/config.example.json +++ b/server/config/config.example.json @@ -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", diff --git a/server/config/config.example.toml b/server/config/config.example.toml index 958d2115..2de7503b 100644 --- a/server/config/config.example.toml +++ b/server/config/config.example.toml @@ -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" ] diff --git a/server/config/config.example.yaml b/server/config/config.example.yaml index 32709d54..c5fd075a 100644 --- a/server/config/config.example.yaml +++ b/server/config/config.example.yaml @@ -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: "" + diff --git a/server/lib/config/config.ts b/server/lib/config/config.ts index d0975b53..ba224005 100644 --- a/server/lib/config/config.ts +++ b/server/lib/config/config.ts @@ -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 : { diff --git a/server/package.json b/server/package.json index d6987a96..d795b773 100644 --- a/server/package.json +++ b/server/package.json @@ -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 ", @@ -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", diff --git a/server/yarn.lock b/server/yarn.lock index 1bcf9d2d..989ceae0 100644 --- a/server/yarn.lock +++ b/server/yarn.lock @@ -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"