/blender

The home of The Blender

Primary LanguageJavaScriptGNU General Public License v2.0GPL-2.0

BLENDER

This is the repository for the Westpac GUI Blender. The blender dynamically builds each selected module that is posted to it and zips it up into a nice download.

Content


Install

Server

The blender is build to be installed behind an NGINX proxy with fallback pages.

NGINX config:

server {
	listen       443 ssl http2;
	# the main server stuff etc...

	# Node proxy
	#
	# blender server
	#
	location /api/blender/ {
		root   /var/www/html/;
		proxy_pass              http://localhost:1337;
		proxy_redirect          http://localhost:1337/  /api/blender/;

		proxy_redirect          off;
		proxy_pass_header       Server;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header        X-Scheme $scheme;
		proxy_set_header        Host $http_host;
		proxy_set_header        X-NginX-Proxy true;
		proxy_connect_timeout   5;
		proxy_read_timeout      240;
		proxy_intercept_errors  on;

		# Put server in maintenance mode if page exists
		if (-f $document_root/construction.html) {
			return 503;
		}

		# error pages
		error_page  400          /blender-error.html;
		error_page  401          /blender-error.html;
		error_page  402          /blender-error.html;
		error_page  403          /blender-error.html;
		error_page  404          /blender-error.html;
		error_page  500 502 504  /blender-error.html;
		error_page  503          @maintenance;
	}
}

CRON task

To make sure the blender is started when the system has to reboot, make sure you add a cron task after reboot:

chmod 700 /www/GUI/blender/starter.sh #the starter.sh of this repo
crontab -e

and add:

@reboot /www/GUI/blender/starter.sh

FOREVER node deamon

Now we still have to make sure the node app is restarted if it crashes for some uncaught reason. Install forever and register the task:

npm i forever -g
forever start -l blender.log --append -o blenderOut.log -e blenderError.log server.js

⬆ back to top


Build

To build the blender make sure you got all dependencies installed via yarn and grunt to build the server files. You will need a .env file in your root directory with the env vars for your environment. There is a .env-template file that mentions all required variables without their values.

To start the blender run:

node remote/server-dev.js

This will spin up the blender in debug mode. You can set the debug level in Blender.DEBUGLEVEL.

Production is run by:

node remote/server.js

⬆ back to top


Tests

The test in tests/remote-test.js will request a multitude of configurations from the locally run blender, unzip the files and compare each folder against a hash checksum. The test can be scaled up and new configurations can be added on the fly.

To run the test:

node tests/remote-test.js

⬆ back to top


Release History remote

  • v1.0.2 - Updated webfont file network location
  • v1.0.1 - Fixed uglifier bug
  • v1.0.0 - Updated dependencies, moved to env vars
  • v0.2.5 - Updated dependencies
  • v0.2.4 - Updated dependencies
  • v0.2.3 - Updated dependencies
  • v0.2.2 - Updated dependencies
  • v0.2.1 - Updated index page background color (GUI’s body @color-Background mapping removed)
  • v0.2.0 - Updated dependencies and Grunticon cssprefix
  • v0.1.3 - Fixed silly SVG brand bug
  • v0.1.2 - Fixed build when only SVG was selected
  • v0.1.1 - Added includeSVG option, refreshed dependencies in blend package
  • v0.1.0 - Improved test, fixed unavailable brands in index, added webfont link and priority system
  • v0.0.4 - Added stress test
  • v0.0.3 - Added dynamic branding
  • v0.0.2 - Added grunt build to download
  • v0.0.1 - Initial file server system setup

⬆ back to top


License

Copyright (c) Westpac 2019. Licensed under the GNU GPLv2.

⬆ back to top

};