Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Proxy service for the cloud
JavaScript Other
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
mongo_schemas @ d1f14a7
vows
wwwOLD
.gitignore
.gitmodules
main.js
package.json
readme.md
replsed.sh
www
wwwling

readme.md

Router

A Node.js web service designed for deployment in a cloud environment and one piece of the Postbooks cloud technology stack. Exposes a REST API for node-datasource clients to lookup users for authentication and for managing Database Servers, Organizations and Users.

Dependencies

Special Note

While production deployment strategies will separate the components in many ways, the route followed in these instructions is for development and assumes a single server for all web service components in the stack. This is especially important to note in terms of the client as various interfaces require pieces of its code base but will need to execute separately moving forward.

Setup

If you have already followed the directions for node-datasource then node-xt and client are already available in the correct location and you do not need to clone them again.

Once node has been setup and is available to your environment, ensure that you have cloned node-xt and client alongside the node-datasource and node-router repositories.

For all of the node layer components in the stack they require the node-xt framework as a dependency. It is possible to, from the project root, execute npm install and have it clone another copy for you. Rather than do this, from the root of the node-router repository, mkdir node_modules. Then cd node_modules and ln -s ../../node-xt ./xt. This way, the local pieces will be sharing the node-xt installation. If you have not already done so, make sure to execute npm install from within the node-xt project root, if you have already setup node-datasource you will have already done this. If you have not setup node-datasource you need to do that now. From the node-router project root, you need to initialize the embedded node-schemas submodule with git submodule update --init.

All of the configuration options for the node-router are in the main.js file. Most likely you will not need to modify any of these options during development. Only in a production deployment should this need to be reevaluated (as ugly as it is for now).

So, a complete list of the executed commands are as follows:

git clone git@github.com:xtuple/node-xt.git
git clone git@github.com:xtuple/node-datasource.git
git clone git@github.com:xtuple/client.git
git clone git@github.com:xtuple/node-router.git
cd node-xt
npm install
cd ../node-router
mkdir node_modules
cd node_modules
ln -s ../../node-xt ./xt
cd ..
git submodule init --update
# make sure to setup node-datasource according to its directions now
Special Note

An ugly fault of the current configuration is the way the salt is shared. Out of the box the node-router defaults to looking at ../node-datasource/lib/private/salt.txt unless otherwise specified in it's own configuration. This will be changed in the future. The salt must be the same or authentication cannot be consistent between them. If the salt is changed after users have been created (see node-router documentation) their passwords will have to be updated or they cannot log in to the system.

Special Note

If you have not already followed the setup directions for client you need to do that now.

At this point the node-router should be ready to run with the command ./main.js. Unless the configuration has changed, it is assumed there is a running instance of mongodb running locally on its default port 27017.

Special Note

Before the client can be used, entries must be made in the administrative interface that is automatically available on localhost:9090 when running node-router. Use this interface to create users, organizations and database server entries. DOCUMENTATION FOR THIS INTERFACE HAS NOT BEEN WRITTEN TO DATE

Something went wrong with that request. Please try again.