RocketChat / Rocket.Chat

The communications platform that puts data protection first.
https://rocket.chat/
Other
40.84k stars 10.76k forks source link

Rocket.Chat Screen Share and Jidesha Chrome extensions returning "Permission Denied" #3919

Closed james-mcgoodwin closed 8 years ago

james-mcgoodwin commented 8 years ago

Hooo kay, think I'll dive in here too with some of my findings as well.

Apologies in advance for the deep verbosity, but I've exhausted most of the avenues of investigation that I can figure to check. I hope this is not too much information in one go, but please forgive me if it is.

My base problem is that while RocketChat starts video conferences, I cannot launch a desktop screen share from one client to another. This includes both in Chrome and the RC client (have not tested firefox). The error message received back reads:

Permission Denied Failed to install desktop sharing extension

TL;DR : I'm likely doing something wrong in my configs, or in my assumptions. Any advice would be appreciated.

The following currently open tickets seem to have the same issue:

3560

3797

A quick rundown of what I'm trying to do:

Objectives

Pretty standard requirement list.

Assumptions

Machines I've got two servers and two client computers, all Ubuntu 16.04:

Network All servers are on the following network:

Hostnames (A records / CNAMES) have been setup for:

PKI I've built a self signed root CA and applied it to all servers/services with the following alternative subject names:

That cert is used by Nginx on both servers as well as prosody in the Jitsi server. The cert has been added to the trusted root cert store in both Ubuntu clients

Jidesha I've compiled the Jidesha plugin with the following manifest:

$  cat ~/git/jidesha/chrome/manifest.json
{
  "manifest_version": 2,
  "name": "Jitsi Desktop Streamer",
  "description": "A simple extension that allows you to stream your desktop into meetings with Jitsi Meet and Jitsi Videobridge.",
  "version": "0.1.5",
  "minimum_chrome_version": "34",
  "icons": {
    "16": "jitsi-logo-16x16.png",
    "48": "jitsi-logo-48x48.png",
    "128": "jitsi-logo-128x128.png"
  },
  "background": {
        "scripts": [ "background.js" ],
        "persistent": true
  },
  "permissions": [
      "desktopCapture"
  ],
  "externally_connectable": {
      "matches": [
          "*://jitsi.maas/*",
          "*://*.jitsi.maas/*",
          "*://rocketchat.maas/*",
          "*://*.rocketchat.maas/*"
      ]
  }
}

This produces an extension with the following ID:

pimkghiofgpblmpodaepplbgokkkpche

I have configured Jitsi-meet with the following for the Jidesha extension details (file trimmed for brevity):

$  cat /etc/jitsi/meet/jitsi.maas-config.js
/* jshint -W101 */
var config = {
    hosts: {
        domain: 'jitsi.maas',
       muc: 'conference.jitsi.maas', // FIXME: use XEP-0030
    },
    bosh: '//jitsi.maas/http-bind', // FIXME: use xep-0156 for that
    clientNode: 'http://jitsi.maas/jitsimeet', // The name of client node advertised in XEP-0115 'c' stanza
    desktopSharingChromeMethod: 'ext',
    desktopSharingChromeExtId: 'pimkghiofgpblmpodaepplbgokkkpche', //Custom Jitsi Chrome Extension
    desktopSharingChromeSources: [ 'screen', 'window'],
    desktopSharingChromeMinExtVersion: '0.1',
    webrtcIceUdpDisable: false,
    webrtcIceTcpDisable: false,
  };

I then ensure that RocketChat has the same ID and the correct address for the Jitsi server rocket_chat_vc_config

Results Trial 1 - Jidesha Chrome Extension Using Chromium in either client01 or client02 I can hit https://jitsi.maas and start a desktop screen share using the Jidesha plugin. Jitsi Meet works just fine when my clients connect to it directly.

When I use Rocketchat however, I get the error message quoted at the top: rocket_chat_vc_failure_2

rocket_chat_vc_failure_1

Looking at Chrome's dev tools, I see the following error message in the Console that I suspect is pertinent: rocket_chat_vc_failure_3

failed to create local tracks ["desktop"]

Results Trial 2 - Using Rocket.Chat Screen Share extension I repeated the above with the ID for Rocket.Chat Screen Sharing: nocfbnnmjnndkbipkabodnheejiegccf

And again got the same result:

rocket_chat_vc_failure_4

Hoping that someone might be able to tell me if I have something wrong in my configs or in my assumptions.

Thanks.

james-mcgoodwin commented 8 years ago

The following is sections of log from client01, using the Rocket.Chat Screen Sharing extension, when it fails to start a screen sharing session.

It seems this is an interesting part of the log (full log below):

[/modules/RTC/ScreenObtainer.js] <Object.init>:  Using Chrome extension for desktop sharing
[/modules/RTC/RTCUtils.js] <Object.getUserMediaWithConstraints>:  Get media constraints Object {audio: Object, video: Object}
Obsolete constraint named googLeakyBucket is ignored. Please stop using it.
[/modules/xmpp/xmpp.js] <XMPP.connectionHandler>:  (TIME) Strophe CONNECTING:    1577.7400000000002
[/modules/RTC/ScreenObtainer.js] <>:  Extension not installed?:  Object {message: "Could not establish connection. Receiving end does not exist."}
[/modules/RTC/ScreenObtainer.js] <>:  Chrome extension installed: false updateRequired: false
[/modules/RTC/RTCUtils.js] <>:  Failed to get access to local media. Error  NavigatorUserMediaError {name: "DevicesNotFoundError", message: "", constraintName: ""} Object {audio: Object, video: Object}
failed to create local tracks ["audio", "video"] JitsiTrackError {gum: Object, name: "gum.general", message: "Generic getUserMedia error", stack: "Error↵    at new JitsiTrackError (https://jitsi.ma…si.maas/libs/lib-jitsi-meet.min.js?v=1108:7:22296"}

My take away from this is that the RC screen sharing extension is not able to get video from the clients screen.

This client is a virtual machine, running Ubuntu 16.04, and has no camera or microphone.

I get an identical log output when I navigate directly to https://jitsi.maas and use Jitsi-meet directly.

---- Full Log ---

Jitsi Room ID: RocketChat7d07efa2d0421588174904eac0816d61 If from direct message or private group don't share.  Or you will be letting the invitee join any future conversation.
Uncaught TypeError: Cannot read property 'type' of undefined
(TIME) index.html loaded:    152.50000000000003
[/modules/RTC/RTCBrowserType.js] <Array.detectChrome>:  This appears to be Chrome, ver: 51
Failed to parse URL argument SyntaxError: Unexpected token o in JSON at position 1(…)
Failed to parse URL argument SyntaxError: Unexpected token o in JSON at position 1(…)
(TIME) document ready:   1315.1650000000002
[/modules/RTC/ScreenObtainer.js] <Object.init>:  Using Chrome extension for desktop sharing
[/modules/RTC/RTCUtils.js] <Object.getUserMediaWithConstraints>:  Get media constraints Object {audio: Object, video: Object}
Obsolete constraint named googLeakyBucket is ignored. Please stop using it.
[/modules/xmpp/xmpp.js] <XMPP.connectionHandler>:  (TIME) Strophe CONNECTING:    1577.7400000000002
[/modules/RTC/ScreenObtainer.js] <>:  Extension not installed?:  Object {message: "Could not establish connection. Receiving end does not exist."}
[/modules/RTC/ScreenObtainer.js] <>:  Chrome extension installed: false updateRequired: false
[/modules/RTC/RTCUtils.js] <>:  Failed to get access to local media. Error  NavigatorUserMediaError {name: "DevicesNotFoundError", message: "", constraintName: ""} Object {audio: Object, video: Object}
failed to create local tracks ["audio", "video"] JitsiTrackError {gum: Object, name: "gum.general", message: "Generic getUserMedia error", stack: "Error↵    at new JitsiTrackError (https://jitsi.ma…si.maas/libs/lib-jitsi-meet.min.js?v=1108:7:22296"}
[/modules/RTC/RTCUtils.js] <Object.getUserMediaWithConstraints>:  Get media constraints Object {audio: Object, video: false}
[/modules/RTC/RTCUtils.js] <>:  Failed to get access to local media. Error  NavigatorUserMediaError {name: "DevicesNotFoundError", message: "", constraintName: ""} Object {audio: Object, video: false}
failed to create local tracks ["audio"] JitsiTrackError {gum: Object, name: "gum.general", message: "Generic getUserMedia error", stack: "Error↵    at new JitsiTrackError (https://jitsi.ma…si.maas/libs/lib-jitsi-meet.min.js?v=1108:7:22296"}
[/modules/xmpp/xmpp.js] <XMPP.connectionHandler>:  (TIME) Strophe CONNECTED:     2170.8500000000004
[/modules/xmpp/xmpp.js] <XMPP.connectionHandler>:  My Jabber ID: d76320c9-5ef5-4617-990e-5e9e698fa182@jitsi.maas/ae96b0c3-7725-48ae-afc3-b4af52c5ba84
initialized with 0 local tracks
[/modules/xmpp/ChatRoom.js] <new ChatRoom>:  Joined MUC as rocketchat7d07efa2d0421588174904eac0816d61@conference.jitsi.maas/d76320c9
[/modules/xmpp/moderator.js] <Moderator.setFocusUserJid>:  Focus jid set to:  undefined
[/modules/xmpp/moderator.js] <Moderator.createConferenceIq>:  Session ID: null machine UID: 6b1f2d6f08c5b09ca189dc025b7fbf82
[/modules/xmpp/strophe.ping.js] <Object.startInterval>:  XMPP pings will be sent every 10000 ms
[/modules/xmpp/moderator.js] <Moderator.setFocusUserJid>:  Focus jid set to:  focus@auth.jitsi.maas
[/modules/xmpp/moderator.js] <Moderator.parseConfigOptions>:  Authentication enabled: false
[/modules/xmpp/moderator.js] <Moderator.parseConfigOptions>:  External authentication enabled: false
[/modules/xmpp/moderator.js] <Moderator.parseConfigOptions>:  Sip gateway enabled:  false
[/modules/xmpp/ChatRoom.js] <ChatRoom.onPresence>:  entered rocketchat7d07efa2d0421588174904eac0816d61@conference.jitsi.maas/focus Object {show: "", status: "", affiliation: "owner", role: "moderator", jid: "focus@auth.jitsi.maas/focus10210363939"…}
[/modules/xmpp/ChatRoom.js] <ChatRoom._initFocus>:  Ignore focus: rocketchat7d07efa2d0421588174904eac0816d61@conference.jitsi.maas/focus, real JID: focus@auth.jitsi.maas/focus10210363939
[/modules/version/ComponentsVersions.js] <ComponentsVersions.<anonymous>>:  Got xmpp version: Prosody(0.9.10,Linux)
[/modules/version/ComponentsVersions.js] <ComponentsVersions.<anonymous>>:  Got focus version: JiCoFo(1.0.1.0-273,Linux)
My role changed, new role: none
[/modules/xmpp/ChatRoom.js] <ChatRoom.onPresence>:  (TIME) MUC joined:   2342.36
hover in d76320c9
No avatar stored yet for d76320c9 - using ID as avatar ID
No avatar stored yet for d76320c9 - using ID as avatar ID
No avatar stored yet for d76320c9 - using ID as avatar ID
My role changed, new role: moderator
[/modules/RTC/ScreenObtainer.js] <handleExtensionInstallationError>:  Failed to install the extension from https://chrome.google.com/webstore/detail/nocfbnnmjnndkbipkabodnheejiegccf Chrome Web Store installations can only be started by the top frame.
failed to create local tracks ["desktop"] JitsiTrackError {name: "gum.chrome_extension_installation_error", message: "Failed to install the extension from https://chrom…/webstore/detail/nocfbnnmjnndkbipkabodnheejiegccf", stack: "Error↵    at new JitsiTrackError (https://jitsi.ma…jitsi.maas/libs/app.bundle.min.js?v=1108:29:6125)"}
[/modules/RTC/RTCUtils.js] <Object.getUserMediaWithConstraints>:  Get media constraints Object {audio: false, video: Object}
Obsolete constraint named googLeakyBucket is ignored. Please stop using it.
failed to share local desktop JitsiTrackError {name: "gum.chrome_extension_installation_error", message: "Failed to install the extension from https://chrom…/webstore/detail/nocfbnnmjnndkbipkabodnheejiegccf", stack: "Error↵    at new JitsiTrackError (https://jitsi.ma…jitsi.maas/libs/app.bundle.min.js?v=1108:29:6125)"}
[/modules/RTC/RTCUtils.js] <>:  Failed to get access to local media. Error  NavigatorUserMediaError {name: "DevicesNotFoundError", message: "", constraintName: ""} Object {audio: false, video: Object}
failed to create local tracks ["video"] JitsiTrackError {gum: Object, name: "gum.general", message: "Generic getUserMedia error", stack: "Error↵    at new JitsiTrackError (https://jitsi.ma…si.maas/libs/lib-jitsi-meet.min.js?v=1108:7:22296"}
failed to share local video JitsiTrackError {gum: Object, name: "gum.general", message: "Generic getUserMedia error", stack: "Error↵    at new JitsiTrackError (https://jitsi.ma…si.maas/libs/lib-jitsi-meet.min.js?v=1108:7:22296"}
tastle73 commented 8 years ago

Me too on this

rockneverdies55 commented 8 years ago

I get this annoying permission denied error in the native app. The app should come with all the permissions needed.

james-mcgoodwin commented 8 years ago

@rockneverdies55 Here's my interpretation of the above:

I have setup my own Jitsi backend along with my own RocketChat back end.

Neither one are simple deployments, and each has dependency on a number of other third party projects.

I don't believe what I'm encountering is a permissions problem. I believe my issue is a miss-alignment of some kind between how the Rocketchat daemon over on the RC server communicates with my clients, and/or, how it handles the webrtc streams for Jitsi.

This could be more a configuration or source-code sort of issue, not actually a permissions issue in the strict sense of file modes or chrome browser restrictions.

That said, I'm in the dark here. I've spent the last week refactoring and making the Jitsi Videobridge rig something I can access directly from the internet. And satisfying a requirement that 100% of all Jitsi traffic go over 443/TCP (No UDP, no 4443 high-ports required).

So who's to say, it could be something very simple and I missed it on my first run though of setting all this up.

I haven't gotten a chance to dig back into the integration between RocketChat and Jitsi. That's next. After finishing a 443/TCP exclusive Jitsi setup.

I had hoped the above technical assessment would pique a RC support agent to tell me if my fundamental assumptions were true or not. But it's possible they are still digesting the diagnostic I provided.

In other words I'm not sure this is something directly overlooked on the RocketChat team's part. It doesn't feel as simple as a blatant permissions oversight in the strict sense I stated above.

I feel like the issue I'm hitting with my architecture/deployment is either rather esoteric and related to source code, OR it's something idiotic that //I// have missed which is very very likely given the complex interrelations between all the moving parts in RocketChat and Jitsi.

And well, the third option is that the Jitsi platform has shifted beneath their feet! If something changed in some place inside jitsi-videobridge project, and the RocketChat guys weren't aware or are currently regression-testing a patch for the jitsi change, well that would explain why we're having this trouble. This is all bleeding edge software we're working with.

All of that is to say it's complicated, and I'm hoping my question helps RC identify for all of us how to fix the roadblock in my situation. ((*Note that my environment may not be how you set yours up;) Your mileage may vary here!))

geekgonecrazy commented 8 years ago

As you guys can see from the behavior here. We're passing the chrome extension id stuff to it, and it gets as far as letting you select a source. Something on the jitsi side is failing when the extension passes the desktop stream.

The error it throws is a bit misleading... as the extension is for sure installed, otherwise you wouldn't have been prompted to select what you wanted to share.

I'm still digging... I know its failing here: https://github.com/jitsi/jitsi-meet/blob/master/conference.js#L926 Digging into the code executing there to see what I can find.

IQ2022 commented 8 years ago

any update on the desktop top sharing with voice enabled????

phrag commented 8 years ago

bump... would love this killer feature to work! Have intermittent 'permission denied' errors on chrome / firefox / safari (OSX 10.11.6) trying to share desktop. When it works, it works really well 👍

rockneverdies55 commented 8 years ago

@geekgonecrazy - it might make sense to take jitsi guys's opinion on this.

kevincolten commented 8 years ago

@isymchych can you provide any context to https://github.com/RocketChat/Rocket.Chat/issues/3919#issuecomment-240501898?

rockneverdies55 commented 8 years ago

@geekgonecrazy - do you think creating an issue in jitsi-meet project and asking the project collaborators for their help and opinions would be useful?

geekgonecrazy commented 8 years ago

@rockneverdies55 yeah sorry I had some emails out and was communicating with them directly. But yes we for sure needed their expertise.

@james-mcgoodwin I didn't say earlier.. but thanks a ton for the detailed breakdown! We usually don't get near that level of detail. You pretty much summarized every piece of the puzzle perfectly! Off-Topic question, are you using Ubuntu MaaS or is that a tld choice of your own?

A quick update for everyone: I just heard back from the Jitsi Meet team. They have found the problem and are working on a solution. Stay tuned 👍

james-mcgoodwin commented 8 years ago

That's great news @geekgonecrazy, I'm glad the Jitsi Meet team was able to find something based off the information in my ticket. And with regard to the detail, you're very welcome. I understand the pain of tracking down a needle in a haystack with too little information. I'm happy it was useful...and it was kinda fun to write. Just the writing helped me explore other (ultimately unsuccessful) avenues that I only thought to try as I was drafting the ticket. I truly hate asking for help with these things when it's something that just a little more elbow-grease on my part could have fixed.

In this case it does sound like the issue was source-code related, and I really sincerely appreciate the help of yourself and the Jitsi team here!

Off-topic, yes! Our lab environment is an Ubuntu MaaS setup that we've deployed OpenStack to. So you're definitely right about the tld of the hostnames;)

Thanks again!

rockneverdies55 commented 8 years ago

Exactly, great news... Thank you @geekgonecrazy! Is there any issue or something where we can watch the progress on the jitsi side?

geekgonecrazy commented 8 years ago

@james-mcgoodwin

Off-topic, yes! Our lab environment is an Ubuntu MaaS setup that we've deployed OpenStack to. So you're definitely right about the tld of the hostnames;)

Really cool! I've been looking into MaaS paired with Juju. Looks like a really good solution.

@rockneverdies55 I'm not aware of one. I'll for sure follow up here as soon as I get word of the fix being released.

geekgonecrazy commented 8 years ago

Alright guys this is now resolved! Much thanks to the Jitsi guys!

rockneverdies55 commented 8 years ago

Great. But how to get the fix? I still get the same popup at the moment...

kevincolten commented 8 years ago

@geekgonecrazy I see it, too. And to clarify I do not see "Screen Chooser" popup, neither. Are there any steps to activate the fix on our side?

geekgonecrazy commented 8 years ago

If you are running your own version of jitsi meet you will need to update that installation. If you are using meet.jit.si the fix requires no action.

If it doesn't prompt you to install the extension: Chrome - https://chrome.google.com/webstore/detail/jitsi-desktop-streamer/diibjkoicjeejcmhdnailmkgecihlobk Firefox - https://addons.mozilla.org/en-us/firefox/addon/jitsi-desktop-streamer/

rockneverdies55 commented 8 years ago

Oh yeah! Now Installed the plugin manually and it started to work. Beautiful!.. :-)

Though it didn't prompt for the plugin installation earlier...

geekgonecrazy commented 8 years ago

They re-did some stuff and apparently removed the prompt... So it looks like we may have to add something in on our side to help get people hooked up.

kevincolten commented 8 years ago

It works! What specifically do we need the Rocket.Chat Screen Share extension for? Is it needed/maintained anymore?

geekgonecrazy commented 8 years ago

@kevincolten its for the webrtc implementation. Ideally in the future we would probably combine in the functionality of the jitsi extension if possible into the Rocket.Chat Screen Share extension

williammahecha commented 8 years ago

Greetings. This week I succefully installed Jitsi Meet quick guide in Ubuntu 14.04 and is working fine, but when I click "share desktop" button in Google Chrome, from another computer, returns this error: Failed to install the extension from https://chrome.google.com/webstore/detail/diibjkoicjeejcmhdnailmkgecihlobk .

The Jitsi Desktop Streamer extension v0.1.6.1 is already added to Chrome. Does Anyone know how to fix it?

rockneverdies55 commented 7 years ago

This "permission denied" thing is back for me. Does anybody experience the same thing?

rockneverdies55 commented 7 years ago

@geekgonecrazy - FYI:
I think the extension you gave the link of above is not the official extension anymore. Not sure, but all of a sudden screensharing started failing on me in rocketchat with permission denied popup. I just visited jitsi-meet's own site to see if I can replicate the problem; screensharing failed again in there too but it recommended this plugin to be installed. First I removed the old plugin (jitsi-desktop-streamer - the one you gave the link). After the installation of the new extension (jitsi-meetings), screensharing started to work in chrome.

geekgonecrazy commented 7 years ago

@rockneverdies55 wow... it does seem they released a new one. Thanks for sharing your findings!

Rohlik commented 7 years ago

They relased new version, so the working URL is here

Dracozny commented 7 years ago

I have the latest one installed and corrected the chrome extension key to reflect the new one but it still gives me the failed to share permission denied error. Using chrome on Linux mint 18.1

rockneverdies55 commented 7 years ago

@Dracozny - what happens if you visit jitsi-meet page directly: https://meet.jit.si ? If you create a test room in there can you use screensharing feature?

Dracozny commented 7 years ago

Yes, I can use meet.jit.si directly without any issues.

On Wed, Mar 8, 2017 at 7:19 AM, rockneverdies55 notifications@github.com wrote:

@Dracozny https://github.com/Dracozny - what happens if you visit jitsi-meet page directly: https://meet.jit.si ? If you create a test room in there can you use screensharing feature?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/RocketChat/Rocket.Chat/issues/3919#issuecomment-285069449, or mute the thread https://github.com/notifications/unsubscribe-auth/ADTxeD15yY6QqyHJ1RD1qcHzXHY70L_Cks5rjscHgaJpZM4Jc8rM .

pettomorosanu commented 7 years ago

Hello, Have Rocket.chat installed and local meet.jit.si. I can start the video conference but screen sharing doesn't work : 'Permission denied Failed to installed desktop sharinf extension". The extension is installed in chrome.

vikas0121 commented 5 years ago

Facing problem while using video conference in chrome. Please help.

Screenshot 2019-03-29 at 7 02 05 PM