Studio Developer Manual / Version 2107
Table Of ContentsThe Studio allows adding client packages at runtime. This enables you to add plugins to your application without the need to compile the Studio application again or even to restart the server.
The mechanism for dynamic Studio packages relies on the concept of Studio app overlays which is described in Section Section 6.2, “Build Process”. In this section it is also described how to best develop your own Studio app overlay. These app overlays are exactly what you can add to a running Studio dynamically.
There are different ways of how to utilize dynamic Studio plugins.
In Section 6.2, “Build Process” it is for example described how to set up a proxy server for this purpose.
As a more straightforward approach, you can upload your dynamic Studio
packages (in the form of a Studio app overlay) to some external
location and just tell the Studio about via a content configuration.
This functionality is activated via the core module dynamic-packages
.
It enables the Studio to load additional Studio packages from a remote URL.
Whitelist
To hamper malicious code injection into the Studio via a remotely loaded Studio package, a whitelist has been introduced. Via this property, it is possible to limit the remote URL sources.
studio.dynamicpackages.remote.urls.whitelist=*//localhost:*,*.coremedia.vm*,*.coremedia.com*
Note
By default, remote dynamic packages are shipped with a predefined whitelist.
Adding remote URLs
To add remote Studio packages, a CMSettings
document named DynamicPackages
has to be created
under the root folder in /Settings/Options/Settings
.
Add a String List
named remoteUrls
to the CMSettings
document DynamicPackages
.
For any Studio package (or multiple packages at once) you want to load remotely, add a
fully qualified URL which points to the dynamic-packages.json
of a remote Studio app overlay,
for example, https://my-file-server.com/coremedia/studio/bookmarks-pro/dynamic-packages.json
.
Note
Only unzipped Studio app overlays are supported. The directory structure of the remote app overlay should be (also compare to Figure 6.1, “Custom App Overlay Workspace”):
<remote-folder-name> | - dynamic-packages.json | - packages | - <package-a> | .sencha | locale ... | package.json | - <package-b> | .sencha | locale ... | package.json
The remoteUrls
are fetched and evaluated on every Studio reload.
Deactivate Remote Dynamic Packages
To disable the remote dynamic packages feature, append #safe-mode
to the Studio URL and invoke it.
This might be helpful, if a remote URL points to invalid packages and the Studio does not load at all.
The deactivation is only per user and only temporary while the hash parameter is set.