Node App Server
This server is a generic static file server for Lingotek Apps
Download
- Include the following line in your package.json and then run
npm install
: "node-app-server": "git@bitbucket.org:lingotek/node-app-server.git", - Periodically run npm update to ensure you're on the latest version.
- This will likely published so that all that's required is 'npm install node-app-server --save' in the future
Requirements
- A directory named "public," the app server will statically serve all the content inside public
- A file named auth_redirect.html that is published to the public directory with the following form, modify to meet your app specifications (the token parsing will likely change in the future)
#!html
<html>
<head>
<script>
var auth_token, expiration, params;
params = window.location.hash.split(/[=&]/);
auth_token = params[1];
expiration = params[3];
var date = new Date(new Date().getTime() + (5*3600000));
var cookiestring ="tm_management_auth_token=" + auth_token + ";expires=" + date.toGMTString() + ";Path=/;";
document.cookie = cookiestring;
window.location = "/tm-management/";
</script>
</head>
<body></body>
</html>
- A json file for your server config with the following form (typically named server-config.json):
#!json
{
"root": "tm-management", //server root, optional, defaults to '/'
"app_id": "653cf7eb-b352-4fb8-a29c-1b129c31f0a1", //currently referred to internally as client id, each app needs one
"auth_token_name":"tm_management_auth_token", //the auth token for a specific app should have a name unique to that app
"app_url_key":"tm_management_url", //the zookeeper key for the app url
"app_port_key":"tm_management_port", //the zookeeper key for the app port
"zookeeper_properties": [
{"name": "sentinel_url", "zk_path": "/lingopoint/sentinel/url", "default": "https://sso.lingotek.com"},
{"name": "yodel_url", "zk_path": "/lingopoint/yodel/url", "default": "http://10.0.11.33:11010"},
{"name": "tm_management_port", "zk_path": "/lingopoint/dashboard/port", "default": 3011},
{"name": "tm_management_url", "zk_path": "/lingopoint/dashboard/url", "default": "http://10.0.11.33:3011"}
]
}
Setup
- Require 'node-app-server' in your server.js
- Require your server-config.json and pass it into the app server
- Notice the AppServer provides an emitter that fires when zookeeper has loaded. This is useful for writing environment specific information to your frontend app
#!javascript
var serverConfig = require('./server-config.json');
var AppServer = require('./node_modules/node-app-server/app-server.js');
var fs = require('fs');
var appServer = new AppServer(serverConfig);
appServer.emitter.on('zookeeper_loaded', function(env) {
fs.writeFile('./public/environment.js', `window.ltk_environment = {sso_url: '${env.sentinel_url}'};`, function(){});
});