Queries about DYNAMIC_BRANDING_URL

I have few queries about DYNAMIC_BRANDING_URL. I have enabled multi-tenant on my docker setup.

  1. How to use this URL dynamically? Right now I have set it to DYNAMIC_BRANDING_URL=https://s3_storage/metadata/myorg1/brand.json where myorg1 is the organization name. The URL I’m using is static and hard-coded right now in the .env file and I can start the meeting using URL like https://example/com/org1/room_name and then it shows the background, logo, etc. BUT if I start the meeting using URL https://example.com/org2/room_name then no background, no logo, etc. How to configure DYNAMIC_BRANDING_URL in such a way that it accepts any organization i.e org1, org2 ---> orgN?

  2. How to configure it using jitsi-meet external api (using iframe)?

@damencho Could you please help?

@emrah Could you please help?

If I’m reading the source correctly, Jitsi meet will call brandingDataUrl with a conferenceFqn param containing the /room (or /tenant/room for multi-tenant setup) which will allow you to return different branding for different tenants. However, brandingDataUrl is only used if dynamicBrandingUrl is not set.

For example, if you set brandingDataUrl to https://api.example.com/branding and a user visits https://meet.example.com/org1/conf123, then branding data would be retrieved from https://api.example.com/branding?conferenceFqn=/org1/conf123

This does mean you won’t be able to use static hosting of branding data and will need some logic on the backend to parse the param and return the appropriate branding.

I don’t see dynamicBrandingUrl or brandingDataUrl in the config whitelist, so I don’t think this is something you can change from the iFrame API and has to be set in config.js on the server.

Thanks a lot Shawn for responding. they changed brandingDataUrl to dynamicBrandingUrl.
ref: here

But the problem is if I try to set it in iframe then it isn’t working. it is not picked up jitsi server. Earlier brandingdataUrl was working fine with iframe too.

The problem with brandingdataUrl if used with iframe was that the jibri unable to show the background and logo in recorded video.

Thanks for clarification, and apologies if I muddied the water with my intrusion.

Interesting that on dockers side BRANDING_DATA_URL is replaced by DYNAMIC_BRANDING_URL but on latest jitsi meet code dynamicBrandingUrl is ignored if brandingDataUrl is set, and conference name only passed to brandingDataUrl and not dynamicBrandingUrl.

It is quite possible I’m missing the bigger picture here and I’m once again muddying the water :smiley:

@damencho Could you please clear our doubts? Is it true that we can’t configure dynamicBrandingUrl using iFrame?

No, you cannot, that is not whitelisted and in general, whitelisting a URL is a security risk for participants as someone can use it to forward information from your jitsi-meet to a third-party instance …
All those URLs can be set on your deployment in config.js.

1 Like

@metadata hello how you are do are make he worke? He no worke for me even I put like so for me config.js

dynamicBrandingUrl: 'https://example.com/file/brand.json'

and inside me brand.json I put

{
logoImageUrl: 'https://example.com/logo-img.png'
}

But he no worke. Please sugeste me how I are fixe?

check out this answer

I’ll share the steps soon. Little busy right now with some high priority work.

Thank you for me responde. I check the poste but he not talk about dynamic branding. Also I no use docker I use reguler instale

  1. create a directory on GitHub. let’s name it myserver.
  2. Now create a directory my_org in the myserver directory.
  3. create a file jitsibrand.json in the my_org directory and myserver directory.
  4. Put the below content in the jitsibrand.json file created under the my_org directory.
{
  "inviteDomain":"test.meet.com",
  "backgroundColor":"#fff",
  "backgroundImageUrl":"https://www.impactmeet.in/assets/img/logo.png",
  "logoClickUrl":"https://www.google.com",
  "logoImageUrl":"https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png"
}

  1. Put the below content in the jitsibrand.json file created under the myserver directory.
{
  "inviteDomain":"test.meet.com",
  "backgroundColor":"#fff",
  "backgroundImageUrl":"https://i2.wp.com/www.freeconference.com/wp-content/uploads/2017/11/video-template-2635532_640-2.jpg",
  "logoClickUrl":"https://www.fb.com",
  "logoImageUrl":"https://blog.hubspot.com/hubfs/image8-2.jpg"
}
  1. set dynamicBrandingUrl: 'https://raw.githubusercontent.com/your_user_name/myserver/main/my_org/jitsibrand.json',

Hi all,

For my self hosted jitsi, i needed the dynamicBrandingUrl to be set from the external_api call, and it turns out that the dynamicBrandingUrl is not whiteListed for the configOverwrite. I needed this because i wanted to brand jitsi for multiple integrating sites that are hosted on another server. So i thought config.js was not an option.

I whitelisted the dynamicBrandingUrl, by adding it to the list in react/features/base/config/configWhitelist.js. (I guess extraConfigWhitelist.js would have been a better place to do it)

I saw that the configOverwrite was successful, but it didn’t fetch the URL and brand it.

I’m not a react developer, but what i could understand was that the dynamic branding was being done at APP_WILL_MOUNT stage, at which the config overwrite was not done yet.

If dynamicBrandingUrl was set in server config.js, then it worked, but if it was overwritten from configOverwrite, branding was already done so overwritten url was not processed. So i tried to retime it.

DynamicBranding feature was starting off at APP_WILL_MOUNT by dispatching fetchCustomBrandingData in react/features/dynamicBranding/middleware.js. I changed that APP_WILL_MOUNT to SET_CONFIG. And also added a line for importing SET_CONFIG from …/base/config

This worked, as far as i can see, i can overwrite dynamicBrandingUrl from options for external_api.

Since i’m not a react developer, and i have very little knowledge of how jitsi works, i’m not sure if this method will cause problems in some cases or not. If anyone knows about potential pitfalls of this approach other than the security issue [damencho] mentioned above, please let me know.

Would you mind sharing where you made this change? Would it be worth a PR as I think lots of us would like to brand using the API and the dynamicBrandingUrl?

Please heed damencho’s advice above that whitelisting URLs could pose a security risk to your users. If PR is raised to whitelist dynamicBrandingUrl, it is very likely that it will not get merged.

Isn’t that what dynamicBrandingUrl is for?

If my understanding is correct, if you set dynamicBrandingUrl='https://api.domain.com/branding' then when someone visits https://meet.domain.com/whatever/roomName, Jitsi Meet will make a GET call to https://api.domain.com/branding?conferenceFqn=/whatever/roomName and if that returns a valid JSON with branding info then that branding will be used. Your API can return different branding based on the conferenceFqn param.

This offers ample flexibility and is a lot more reliable and secure that allowing the branding URL to be injected by client config overrides.

I am not seeing the url parameter of conferenceFqn= in the request. Is there something that needs to be done to add that? Is there anyway to use the iFrame’s URL instead of the bridge directory?