@cisco-msx/dev-proxy
Simple webserver intended to be used for developing the MSX browser application.
Behaviour
This webserver will attempt to serve local files from the directory provided to it, but will fall back to proxying requests to a remote MSX instance if it cannot locate a file matching the request.
Usage
Usage: msx-dev-proxy [options] <directory> <remote host>
Arguments:
directory root of files to be served
remote host host of remote MSX instance
Options:
-V, --version output the version number
-p, --port <port> port server should listen on (default: 9004)
-h, --hostname <hostname> hostname server will be accessed from instead of localhost, ex.
proxy.dev
--force-https always proxy request using https (default: true)
--no-force-https
--allow-self-signed allow self signed certificates from remote (default: true)
--no-allow-self-signed
--google-key <key> Google API key browser application should use
--help display help for command
Example
> npm install --save-dev @cisco-msx/dev-proxy
> npx msx-dev-proxy ./build remote-host.ciscomsx.com --port 9004
Notes
The proxy modifies the following parts of the requests sent to and responses sent by the remote MSX instance.
MSX Configuration
Configuration variables for the MSX browser application are defined by the file
gconfig.js
on an instance. The proxy performs inline modification of this file
so the configuration used by the browser application better matches the
arguments passed to the proxy. Specifically it will re-write the following
variables to the provided values:
-
UIROOTURL
: will either be the providedhostname
, or elselocalhost:<port>
-
GATEWAY_URL
: will be re-defined to matchremote
-
LOGIN_URL
: will be re-defined to matchremote
-
GOOGLE_API_KEY
: will be re-defined to matchgoogle-key
if given
Content Security Policy
Responses from the proxy will have the content-security-policy
header
modified. This is to ensure the remote's host is always correctly defined in
the allowed connect-src
s, since requests to the MSX API from the browser
application normally bypass the proxy and are made directly to the remote host.