Customizing and branding the Connect apps

The branding and styling of the Connect web apps and Connect desktop app can be customized. This changes the look and feel of the Connect app regardless of which service is being accessed. (However, the theme-based elements of each individual service may also have been customized — a theme changes the look and feel of the actual conference you have joined, or are trying to join.)

Connect app customization can be used to control:

  • default settings such as bandwidth, screen sharing frame rate and so on
  • the ability to display an image/logo and accompanying welcome text on a landing page, and to use a custom favicon
  • language translations and the default language
  • the color scheme for buttons, icons and other graphic indicators; elements can be customized individually or a general color scheme can be applied to all similar items.

To customize the Connect web apps you typically create a branding package and then upload it to the Management Node. You can use Pexip's branding portals to quickly and easily create branding packages, or you can create them manually. Separate branding packages are required for each of the web app versions in use in your deployment.

If you have created customized branding for Webapp2, you can also use this to customize the Connect desktop app. To do this you need to use Pexip Infinity's provisioning features to instruct those clients to override their built-in branding and use the customized branding instead.

This topic explains the two main steps in applying branding to Connect web apps in your deployment:

  1. Creating a branding package:
  2. Uploading the branding package to the Management Node so that it is available to all users.

It also includes information on:

Creating a branding package using the portals

You must create a branding package before you can upload it to the Management Node or use it to brand the desktop client. Our recommended method for creating a branding package is to use the branding portals for either Webapp3 or Webapp2 (although you can also create the required files manually). These web-based portals guide you through the selection of your image files and colors without having to edit individual CSS files etc., and then generates the customized branding package for you.

Downloading an existing package

As an alternative to using the branding portals to create new branding packages, you can download, edit, and upload an existing branding package. This might be a default branding package downloaded from the Management Node, a package previously created using the branding portals, or a package downloaded from previous versions of Pexip Infinity.

If you are using a Webapp2 branding package created for a v30 or earlier version of Pexip Infinity, you must amend the file structure before uploading it — see Using a pre-v31 Webapp2 branding package.

Manually editing an existing package is useful if you have very specific modifications that you want to apply to the branding files, or if you are including plugins. Note that manual configuration requires knowledge of core web-design technologies such as HTML, JavaScript and CSS.

This section covers how to obtain branding packages. For full information on manually editing these packages, see Advanced Connect app branding and customization

Downloading branding packages from the Management Node

Pexip Infinity includes a number of default branding packages that you can download and edit to create your own customized branding. . For full details, see Default branding packages. In addition, if you have existing custom branding files uploaded for any of the three web apps, you can also download and use these as the basis on which to apply your modifications.

You may also wish to download an existing branding package in order to upload it to an external server if you are hosting the Connect web app externally.

To download an existing branding package from the Management Node:

  1. Go to Web App > Web App Branding.
  2. Select the Pexip branding package for the relevant web app version and then from the bottom of the detail page select Download.

    A ZIP file containing the selected branding files is downloaded to your local file system.

  3. Unpack the downloaded file and apply your modifications to the relevant files.

    The contents of the branding files and how to modify them is fully described in Advanced Connect app branding and customization.

  4. Repackage your branding files into a single ZIP file. This file will need to have a different name to any packages already uploaded. If you are editing an existing branding package, after uploading simply redirect the current path to point to this new package.

    The ZIP file must contain the complete set of branding files. You must retain the original file/folder structure in the rebuilt ZIP file.

    You must include the manifest.json file in the webapp2/branding or webapp3/branding folder.

  5. Upload the branding package to your Management Node.

Using a pre-v31 Webapp2 branding package

If you are using an existing Webapp2 branding package that was created for Pexip Infinity version 30 or earlier, you will need to change the structure of the files and folders within the branding package before it can be uploaded to the v31 or later Management Node. To do this:

  1. Unpack the contents of the .zip file. This will be unpacked to a /webapp2 folder.

  2. Within the /webapp2 folder, create another folder called branding and move the contents of the /webapp2 folder into this subfolder. This will give you a structure that looks like the following:

  3. If you wish to make further customizations you can edit the contents of the folder, and then re-zip it. See Manually customizing Connect Webapp2 for full information.

  4. Upload the webapp2.zip file to your Management Node.

Editing an existing package

You can also use as the basis of your new branding packages any other existing branding packages. These might be downloaded form previous versions of Pexip Infinity, from either of the branding portals, or be packages that you created entirely manually. Simply ensure that these packages meet the requirements outlined in Manually customizing Connect Webapp3 or Manually customizing Connect Webapp2 as appropriate, before zipping and uploading the new package.

Uploading the branding package

Branding packages are uploaded as .ZIP files. The files must contain the required branding files in a webapp3/branding or webapp2/branding subfolder.

To upload a branding package to your Management Node:

  1. Go to Web App > Web App Branding.

  2. From the bottom of the page, select Add Webapp branding package.

  3. On the Add Webapp branding package page, enter the following information about the package you wish to upload:

    Name The name for this branding package.
    Description An optional description of this branding package, to help you identify it easily.
    Web app version Select the web app version to which this branding package will apply.
    Branding package to upload Select Choose File and select the ZIP file containing your customizations.
  4. Select Save.

    The branding package will be verified and uploaded.

  5. After the branding package is uploaded, in order to use it you must select it for use with one or more web apppaths, creating a new path if necessary.

Any changes you make to branding packages and paths must be replicated out to all Conferencing Nodes before being available (typically after approximately one minute).

Updating an existing package

To make changes to a branding package already in use in your deployment:

  1. Download the old branding package and edit it with your updates.
  2. Save the updated branding package as a ZIP file.
  3. Upload the updated branding package (web app > web app branding), giving it a different name to the existing version.
  4. Edit all paths that use the old version of the branding package so that they use the new version instead.
  5. Delete the old branding package.

Don't delete the old branding package before uploading the new package and redirecting to it. If you do, all the paths that used the deleted package will revert to using the default branding, meaning that participants will experience the default branding until you have redirected the relevant paths to use the new package.

Removing a package (reverting to default branding)

Default branding packages cannot be deleted. You can remove customized branding in one of two ways:

  • If you wish to keep the branding for possible later use, simply edit the paths that currently use that package, so that the paths either use a different branding package, or use the default branding.
  • If you no longer wish to keep the branding package, delete it. Any paths that point to deleted branding packages will revert to using the default branding.

To delete a branding package:

  1. On the Management Node, go to to Web App > Web App Branding.
  2. Select the tick boxes next to the branding packages you wish to remove.
  3. From the Action drop-down, select Delete selected Web app branding packages.

Wait for the customized branding to be removed from all Conferencing Nodes (typically after approximately one minute). After this time, all new participants accessing the path will see the default branding. Note however that any participants currently using the deleted package will continue to see the deleted branding until they refresh their browser.

Applying branding to the desktop clients

Any branding package that is uploaded to the Management Node is only applied to the relevant Connect web app.

If you have created customized branding for Webapp2, you can also use this to customize the Connect desktop app. To do this you need to use Pexip Infinity's provisioning features to instruct those clients to override their built-in branding and use the customized branding instead. This is achieved by specifying the brandingURL provisioning parameter when you construct each individual desktop client user's provisioning URI.

  • The brandingURL parameter must refer to a directory on an accessible server that contains the branding package.
  • The branding package must be signed, and the client must upload a trusted (public) key before the branding can be applied.
  • The branding package must be presented as a branding.zip file and an associated branding.zip.sig file.

For example, if brandingURL = pexample.com/foo, then you need to provide pexample.com/foo/branding.zip and pexample.com/foo/branding.zip.sig.

After a Connect app has been provisioned with a brandingURL provisioning parameter, every time it launches it checks the contents of the branding files at the brandingURL location to see if the branding has changed (it checks to see if the brandingID in the manifest.json file has changed). If the branding has been updated, the client fetches and caches the relevant files.

Note that the desktop client's favicon, taskbar/tray icons and app name cannot be updated via branding as these elements are fixed during the installation of the client software.

See Registering and provisioning the Connect desktop app for full instructions about how to set up provisioning URIs. Note that the client does not need to be registered in order to use the branding provisioning feature.

Note that as of version 1.8 you cannot apply branding to the mobile clients, and the desktop client branding can no longer be hosted on Conferencing Nodes.

Creating and signing a branding package for the desktop clients

The branding package in the brandingURL location must be presented as a branding.zip file plus an associated branding.zip.sig file that contains the package's signature.

Contents of branding.zip

Typically we recommend that you use a branding.zip file produced by the Pexip branding portal as this is a suitable zip file/format and contains all of the relevant content (although you must still sign it yourself).

The manifest.json is automatically generated by the Pexip branding portal and includes the brandingID timestamp and also indicates which parts of the app are customized.

If you want to create your own branding.zip file then it must contain a webapp2 folder as its root folder and that must then have the following structure/contents:

  • manifest.json (mandatory)
  • settings.json (optional)
  • watermark_icon.png (optional)
  • favicon files (optional, applies only to the web app)
  • site.webmanifest (optional)
  • themes directory containing styles.css (both optional)

as shown below:

Full details of the structure of the manifest.json file and the other application files are contained in Advanced Connect app branding and customization.

Signing the branding package

You must use JSON Web Token (JWT) to sign the package. (JWT is an open standard that defines a way for securely transmitting information between parties as a JSON object.)

As part of the process to sign the branding package you need a public/private keypair. You may already have a keypair that you can use for this process, or you can use a third-party tool such as PuTTYgen to generate a keypair. The key must be in RSA format and at least 2048 bits. Alternatively you can log in to your Management Node over SSH and run the following commands to generate a private and public key pair:

openssl genrsa -out /dev/shm/privatekey.pem 2048
openssl rsa -in /dev/shm/privatekey.pem -pubout -out /tmp/publickey.pem

To sign the branding package and create your .sig file:

  1. Create your branding.zip file.
  2. Using a plain text editor, create a shell script file called mkjwt.sh containing the following code:

    Copy to clipboard
    #!/bin/sh

    set -e

    if [ $# -ne 2 ]; then
      echo "Usage: $0 <privatekey.pem> <branding.zip>" >&2
      exit 1
    fi

    HEADER="eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9"
    HASH=$(openssl dgst -sha256 $2 | sed -e 's/^[^ ]* //')
    PAYLOAD=$(echo -n "{\"sha256\":\"${HASH}\"}" | base64 -w0 | sed -e 's/\+/-/g' -e 's/\//_/g' -e 's/=//g')
    SIG=$(echo -n "${HEADER}.${PAYLOAD}" | openssl dgst -sha256 -sign $1 | base64 -w0 | sed -e 's/\+/-/g' -e 's/\//_/g' -e 's/=//g')

    echo "${HEADER}.${PAYLOAD}.${SIG}"
  3. Copy your private key file (named privatekey.pem), the branding.zip file and the mkjwt.sh file into the /dev/shm directory on the Management Node using an SCP (Secure Copy) client, for example WinSCP.
  4. Connect over ssh into the Management Node as user admin with the appropriate password.
  5. Run the following commands:

    cd /dev/shm

    chmod 0755 mkjwt.sh

  6. Run the following command to generate the .sig file:

    ./mkjwt.sh privatekey.pem branding.zip >branding.zip.sig

  7. Run the following command to remove the private key file:

    rm ./privatekey.pem

  8. Use the SCP client to copy the generated branding.zip.sig file to your local machine.

Using the branding package on the desktop client

The client will not automatically use the customized branding package (as referred to at the provisioned brandingURL location).

Each client user must first import a trusted key via Settings > Advanced settings > Import trusted key and confirm that they want to apply the branding. The trusted key file they need to import (i.e. that you need to distribute) is the public key file used as part of the key pair used to create the JWT signature.

Only distribute the public key. Do not distribute the private key.