diff --git a/app/package.json b/app/package.json index f511c5d3..8361df20 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "edumeet", - "version": "3.5.4", + "version": "3.5.5", "private": true, "description": "edumeet meeting service", "author": "Håvar Aambø Fosstveit ", @@ -45,6 +45,7 @@ "material-ui-popup-state": "^1.8.0", "mediasoup-client": "^3.6.55", "notistack": "^0.9.5", + "universal-cookie": "4.0.4", "prop-types": "^15.7.2", "random-string": "^0.2.0", "react": "^16.10.2", diff --git a/app/src/components/JoinDialog.js b/app/src/components/JoinDialog.js index 2346d686..dd070d00 100644 --- a/app/src/components/JoinDialog.js +++ b/app/src/components/JoinDialog.js @@ -39,6 +39,7 @@ import { useHistory, useLocation } from 'react-router-dom'; import IconButton from '@material-ui/core/IconButton'; import Tooltip from '@material-ui/core/Tooltip'; import { config } from '../config'; +import InfoIcon from '@material-ui/icons/Info'; const styles = (theme) => ({ @@ -186,7 +187,6 @@ const JoinDialog = ({ }) => { - const location = useLocation(); const history = useHistory(); @@ -671,6 +671,51 @@ const JoinDialog = ({ + { config.infoTooltipText!=='' && + +
+ + { config.infoTooltipLink!=='' && + {config.infoTooltipText} + } + + { config.infoTooltipLink==='' && +

{config.infoTooltipText}

+ } +
+ } + { config.infoTooltipDesc!=='' && +
+ {config.infoTooltipDesc} +
+ } {/* {authType === 'auth' && !loggedIn && diff --git a/app/src/config.ts b/app/src/config.ts index c0a0eab4..402f6cd4 100644 --- a/app/src/config.ts +++ b/app/src/config.ts @@ -498,6 +498,24 @@ Setting 'play' to null disables the sound notification. format : 'String', default : 'edumeet' }, + infoTooltipText : + { + doc : 'Informative text on the join page. If empty hidden.', + format : 'String', + default : '' + }, + infoTooltipLink : + { + doc : 'Informative text link site on the join page. If empty hidden.', + format : 'String', + default : '' + }, + infoTooltipDesc : + { + doc : 'Informative text description on the join page. If empty hidden.', + format : 'String', + default : '' + }, supportUrl : { doc : 'The service & Support URL; if `null`, it will be not displayed on the about dialogs.', diff --git a/app/src/index.js b/app/src/index.js index 2ab358dd..39a207df 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,6 +15,7 @@ import RoomClient from './RoomClient'; import RoomContext from './RoomContext'; import deviceInfo from './deviceInfo'; import * as meActions from './store/actions/meActions'; +import * as roomActions from './store/actions/roomActions'; import UnsupportedBrowser from './components/UnsupportedBrowser'; import ConfigDocumentation from './components/ConfigDocumentation'; import ConfigError from './components/ConfigError'; @@ -97,6 +98,25 @@ function run() const displayName = parameters.get('displayName'); const muted = parameters.get('muted') === 'true'; const headless = parameters.get('headless'); + const hideNoVideoParticipants = parameters.get('hideNoVideoParticipants'); + const filmstripmode = parameters.get('filmstrip'); // filmstrip mode by default + const acceptCookie = parameters.get('acceptCookie'); // auto accept cookie popup + const hideSelfView = parameters.get('hideSelfView'); + + if (filmstripmode === 'true') + { + store.dispatch( + roomActions.setDisplayMode('filmstrip') + ); + } + + if (acceptCookie === 'true') + { + const cookies = new Cookies(); + + cookies.set('CookieConsent', 'true', { path: '/' }); + } + const showConfigDocumentationPath = parameters.get('config') === 'true'; const { pathname } = window.location; @@ -218,6 +238,16 @@ function run() basePath }); + if (hideNoVideoParticipants === 'true') + { + roomClient.setHideNoVideoParticipants(true); + } + + if (hideSelfView === 'true') + { + store.dispatch(roomActions.setHideSelfView(hideSelfView)); + } + global.CLIENT = roomClient; render( diff --git a/app/yarn.lock b/app/yarn.lock index c916fe85..77d0b633 100644 --- a/app/yarn.lock +++ b/app/yarn.lock @@ -1931,6 +1931,11 @@ dependencies: "@types/node" "*" +"@types/cookie@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.3.3.tgz#85bc74ba782fb7aa3a514d11767832b0e3bc6803" + integrity sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow== + "@types/debug@^4.1.7": version "4.1.7" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" @@ -1956,11 +1961,6 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== -"@types/events@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - "@types/glob@^7.1.1": version "7.1.3" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" @@ -2831,10 +2831,10 @@ autoprefixer@^9.6.1: postcss "^7.0.32" postcss-value-parser "^4.1.0" -awaitqueue@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/awaitqueue/-/awaitqueue-2.3.3.tgz#35e6568970fcac3de1644a2c28abc1074045b570" - integrity sha512-RbzQg6VtPUtyErm55iuQLTrBJ2uihy5BKBOEkyBwv67xm5Fn2o/j+Bz+a5BmfSoe2oZ5dcz9Z3fExS8pL+LLhw== +awaitqueue@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/awaitqueue/-/awaitqueue-2.4.0.tgz#beb9a2b563b4817921f21c09cca2cdbb0d5989d4" + integrity sha512-9nTnPxVuxiuKFTHslm9ltnekUECJidOQ5kE6JpZUH77KrKqStQuWUW7JPB2GJZ7rOwWLcbToHiIXle/nJe1VpQ== axe-core@^4.0.2: version "4.2.1" @@ -4085,6 +4085,11 @@ cookie@0.4.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== +cookie@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" @@ -4558,10 +4563,10 @@ debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== +debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" @@ -8401,21 +8406,21 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mediasoup-client@^3.6.47: - version "3.6.50" - resolved "https://registry.yarnpkg.com/mediasoup-client/-/mediasoup-client-3.6.50.tgz#16ca4fe7e2920c1d0e74c7e9b66bd13a4ebdf44b" - integrity sha512-YSd5GHD3gTyZXUBWDtpCeng1i+pE5dbRQeY11fQWKcFGEao2XaNW/+4FCzLBRNbEJZ2nFVJmxwNSFB4R4Jt/PQ== +mediasoup-client@^3.6.55: + version "3.6.66" + resolved "https://registry.yarnpkg.com/mediasoup-client/-/mediasoup-client-3.6.66.tgz#80e5dc2746b795d44c55901b0b8f5a796b196d87" + integrity sha512-xTT8v42ykXeAgGHH4MsTirtkMZ46hbPkKfbO663l0/vGu9uD1bSR5dFSe+scp6go1LKF+iDLnPyO0mvWLhlAKg== dependencies: "@types/debug" "^4.1.7" - "@types/events" "^3.0.0" - awaitqueue "^2.3.3" + awaitqueue "^2.4.0" bowser "^2.11.0" - debug "^4.3.3" + debug "^4.3.4" events "^3.3.0" fake-mediastreamtrack "^1.1.6" h264-profile-level-id "^1.0.1" sdp-transform "^2.14.1" - supports-color "^9.2.1" + supports-color "^9.2.3" + uuid "^3.4.0" mediasource@^2.2.2, mediasource@^2.3.0: version "2.4.0" @@ -12223,10 +12228,10 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^9.2.1: - version "9.2.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.2.1.tgz#599dc9d45acf74c6176e0d880bab1d7d718fe891" - integrity sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ== +supports-color@^9.2.3: + version "9.3.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.3.0.tgz#cce566c5ad562eece4dfe5a4502a58efc54986a9" + integrity sha512-hJ6RYjNbcBFkpHi+ykjar+7GgHs+65Kxyw940nBLOSjaWZ13acq4A5f+gWiV5w+xfsg5MbnjDxTigLcUuljerw== supports-hyperlinks@^2.0.0: version "2.2.0" @@ -12771,6 +12776,14 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" +universal-cookie@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/universal-cookie/-/universal-cookie-4.0.4.tgz#06e8b3625bf9af049569ef97109b4bb226ad798d" + integrity sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw== + dependencies: + "@types/cookie" "^0.3.3" + cookie "^0.4.0" + universalify@^0.1.0, universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" diff --git a/server/lib/config/config.ts b/server/lib/config/config.ts index 33eb6c57..d0975b53 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.*)|(ens.*)|(br.*)|(wl.*)|(ww.*)'; +const ifaceWhiteListRegex = '^(eth.*)|(enp.*)|(ens.*)|(br.*)|(wl.*)|(ww.*)'; // add parsers convict.addParser([ diff --git a/server/package.json b/server/package.json index dd82201c..d6987a96 100644 --- a/server/package.json +++ b/server/package.json @@ -1,6 +1,6 @@ { "name": "edumeet-server", - "version": "3.5.4", + "version": "3.5.5", "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 && find dist/* -maxdepth 0 ! -name public -exec rm -rf {} \\; && tsc && ln -s ../certs dist/certs && chmod 755 dist/server.js && ( for fileExt in yaml json toml ; do [ -f config/config.$fileExt ] && cp config/config.$fileExt dist/config/; done ) | true && touch 'dist/ __AUTO_GENERATED_CONTENT_REFRESHED_AFTER_REBUILDING!__ '", + "build": "mkdir -p dist && touch dist/tmp && find dist/* -maxdepth 0 ! -name public -exec rm -rf {} \\; && tsc && ln -s ../certs dist/certs && chmod 755 dist/server.js && ( for fileExt in yaml json toml ; do [ -f config/config.$fileExt ] && cp config/config.$fileExt dist/config/; done ) | true && touch 'dist/ __AUTO_GENERATED_CONTENT_REFRESHED_AFTER_REBUILDING!__ '", "dev": "nodemon --exec ts-node --ignore dist/ -e js,ts server.js", "connect": "ts-node connect.js", "lint": "eslint ./ --ext .js,.ts; exit 0", diff --git a/server/yarn.lock b/server/yarn.lock index 9280519a..1bcf9d2d 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.3.3: +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: version "4.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== @@ -923,6 +923,13 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -2189,16 +2196,15 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mediasoup@3.9.6: - version "3.9.6" - resolved "https://registry.yarnpkg.com/mediasoup/-/mediasoup-3.9.6.tgz#406d6e5eea9096fa55df2b890ab1c42df2547b15" - integrity sha512-eRWdsyO5m9IN3EHJ1cST4Muv+ddhZbBcvDLUGHVoRm34l5xiB/2F9H0iL7aASVSis0yWN9O/ogqEAb4J6xDDlA== +mediasoup@3.10.5: + version "3.10.5" + resolved "https://registry.yarnpkg.com/mediasoup/-/mediasoup-3.10.5.tgz#bbc0da60286b4c9e44331308249d123a0e996738" + integrity sha512-qYxJvCPcHndEP5vuIUgk+b/YjFq2vlVxX7BnYLxhTC/qYZF6103o/6J7HgwxAfLpkLLEyBq+g3nSBXxretPo/Q== dependencies: "@types/node" "^16.11.10" - debug "^4.3.3" + debug "^4.3.4" h264-profile-level-id "^1.0.1" - random-number "^0.0.9" - supports-color "^9.2.1" + supports-color "^9.2.2" uuid "^8.3.2" merge-descriptors@1.0.1: @@ -2698,11 +2704,6 @@ random-bytes@~1.0.0: resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" integrity sha1-T2ih3Arli9P7lYSMMDJNt11kNgs= -random-number@^0.0.9: - version "0.0.9" - resolved "https://registry.yarnpkg.com/random-number/-/random-number-0.0.9.tgz#5907b96f05041807c52aed601c869524d86fbbd5" - integrity sha512-ipG3kRCREi/YQpi2A5QGcvDz1KemohovWmH6qGfboVyyGdR2t/7zQz0vFxrfxpbHQgPPdtVlUDaks3aikD1Ljw== - range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -3154,10 +3155,10 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^9.2.1: - version "9.2.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.2.1.tgz#599dc9d45acf74c6176e0d880bab1d7d718fe891" - integrity sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ== +supports-color@^9.2.2: + version "9.3.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.3.0.tgz#cce566c5ad562eece4dfe5a4502a58efc54986a9" + integrity sha512-hJ6RYjNbcBFkpHi+ykjar+7GgHs+65Kxyw940nBLOSjaWZ13acq4A5f+gWiV5w+xfsg5MbnjDxTigLcUuljerw== supports-preserve-symlinks-flag@^1.0.0: version "1.0.0"