WebUI Migration to jst
Introduction to WebUI
WebUI is a graphical user interface that is available to the connected devices. It acts as an application running on the RDK-B stack and performs the functions of a device management interface similar to TR69 & SNMP. A user can monitor and modify RDK-B feature settings/rules using WebUI. It is a client–server application, client runs in a web browser (as part of devices connected over LAN) and Lighttpd on the RDK-B stack acts as server.
The functions in WebUI are defined in C and are called from PHP using ZEND_API. PHP and the Zend Engine manage [exchange] variables internally over the D-Bus.
As part of TinyRDK initiative, WebUI is developed in Java script using duktape as JavaScript engine with a focus on portability and compact footprint. All php pages will be in Java script. User interface remains the same.
What is duktape and why it is required?
- Duktape is a lightweight javascript engine (https://duktape.org/).
- Alone it does not provide a web development engine. Therefore, a template engine(called jst) and web server api is built on top of duktape.
- Duktape provides an API to bind javascript to C functions.
Focus on migration
- To make migration as easy as possible the template and api signature will match php as closely as possible.
- Many php functions and variables will be rewritten in javascript, so that changes to the exits code are minimized.
- The template engine will provide the same features as php’s basic templating where php code, embedded in <?php…?> tags, can be mixed with raw html.
- The pages are jst pages and the script tags are <?% … %>, which is similar to other engines like EJS and JavaServer pages.
How jst changes are handled in code?
- All the pages in php are converted to jst by compiling and running the script build_php2jst.sh.
- With latest code , jst is enabled by default in CMF using DISTRO_FEATURES.
File : meta-rdk/conf/distro/include/rdkb.inc |
- Recipe files in source code
meta-rdk-broadband/recipes-ccsp/ccsp/ccsp-webui-jst.bb
meta-rdk-ext/recipes-support/duktape/duktape_2.2.0.bb
meta-rdk-broadband/recipes-ccsp/ccsp/jst.bb - Webui jst source code is available at rdkb/components/opensource/ccsp/webui/source/Styles/xb3/jst
- Files in GW
jst file path – /usr/www2
css, img, js, syndication partner logo – /usr/www2/cmn/
set actions are handled in /usr/www2/actionHandler
javascript implementation for php api – /usr/www2/includes/php.jst
- “/etc/webgui.sh” will modify “/etc/lighttpd.conf” on runtime and create “/tmp/lighttpd.conf”