Example #1
0
File: index.js Project: heroku/uku
  return new Promise(function (resolve, reject) {

    return Glue.compose(manifest, options, function (err, server) {

      exports.ready(err, server, resolve, reject);
    });
  });
Example #2
0
internals.startThemeEditor = function(options, callback) {
    var themeEditorHost = 'http://localhost:' + options.stencilEditorPort;
    var stencilEditorConfig = {
        connections: [{
            host: 'localhost',
            port: options.stencilEditorPort
        }],
        plugins: {
            './plugins/StencilEditor': {
                variationIndex: options.variationIndex,
                stencilServerPort: options.dotStencilFile.stencilServerPort,
                stencilEditorPort: options.stencilEditorPort,
                themeEditorHost: themeEditorHost,
                themeServer: options.themeServer
            }
        }
    };

    Glue.compose(stencilEditorConfig, {relativeTo: __dirname}, function (err, server) {
        if (err) {
            return callback(err);
        }

        server.start(function () {
            console.log('Theme Editor:', themeEditorHost.cyan);
            return callback();
        });
    });
};
Example #3
0
exports.init = (manifest, options, next) => {

    Glue.compose(manifest, options, (err, server) => {

        if (err) {
            return next(err);
        }

        server.on('request-error', (request, err) => {
            const logData = {
                event: 'onRequestError',
                reqId: request.id,
                ip: request.headers['x-forwarded-for'] || request.info.remoteAddress,
                userAgent: request.headers['user-agent'],
                reqPath: request.path,
                error: err
            };
            logger('log', logData);
        });

        server.ext('onPreHandler', (request, reply) => {

            const logData = {
                event: 'onPreHandler',
                reqId: request.id,
                ip: request.headers['x-forwarded-for'] || request.info.remoteAddress,
                userAgent: request.headers['user-agent'],
                reqPath: request.path,
                reqData: { query: request.query, params: request.params, payload: request.payload }
            };
            logger('log', logData);
            return reply.continue();
        });

        server.on('response', (request) => {

            try {
                const responseData = JSON.stringify(Util.inspect(request.response.source));
                const logData = {
                    event: 'onResponse',
                    reqId: request.id,
                    ip: request.headers['x-forwarded-for'] || request.info.remoteAddress,
                    userAgent: request.headers['user-agent'],
                    reqPath: request.path,
                    resData: responseData
                };
                logger('log', logData);
            }
            catch (e) {
                logger('error', 'Server on response cannot parse output');
            }
        });

        server.start((err) => {
            return next(err, server);
        });

    });

};
Example #4
0
exports.init = (manifest, options, next) => {

    Glue.compose(manifest, options, (err, server) => {

        if (err) {
            return next(err);
        }

        const web = server.select('web');
        const webTls = server.select('web-tls');

        // TLS everything

        web.ext('onRequest', (request, reply) => {

            return reply.redirect(webTls.info.uri + request.url.path).permanent();
        });

        // Start the server

        server.start((err) => {

            return next(err, server);
        });
    });
};
Example #5
0
module.exports = async () => {
	try {
		const server = await Glue.compose(
			manifest,
			options
		);

		return server;
	} catch (error) {
		// eslint-disable-next-line no-console
		return console.warn(error);
	}
};
Example #6
0
exports.init = (manifest,options, next) => {

    Glue.compose(manifest,options, (err,server) => {

        if(err) {
            return next(err)
        }

        server.start((err) => {
            return next(err, server)
        })
    })
}
Example #7
0
exports.init = (manifest, options, next) => {

    Glue.compose(manifest, options, (err, server) => {

        Hoek.assert(!err, err);

        server.start((err) => {

            // console.log(`✅  Hapi Days!`);
            return next(err, server);
        });
    });
};
Example #8
0
exports.init = function (manifest, composeOptions, next) {

    Glue.compose(manifest, composeOptions, function (err, server){

        if (err) {
            return next(err);
        }

        server.start(function (err) {

            return next(err, server);
        });
    });
};
Example #9
0
const start = async () => {
  try {
    console.log("Composing server...")
    server = await Glue.compose(
      manifest,
      { relativeTo: Path.join(__dirname, "modules") }
    )
    console.log("Starting server...")
    await server.start()
    console.log(`Server running at: ${server.info.uri}`)
  } catch (err) {
    console.error(err)
    process.exit(1)
  }
}
Example #10
0
module.exports = (callback) => {

    Glue.compose(manifest, options, (err, server) => {
        server.start(function (err) {
            // API running on port 3000
            if (err) throw err;
            console.log('Server running at:', server.info.uri);
        });

        if (callback) {
            callback(server);
        }
    });

};
Example #11
0
internals.prepareServer = function (options, callback) {

    const manifest = {
        registrations: [
            { plugin: { register: '../', options: options } },
            { plugin: { register:'./plugins/blah.js', options: null } },
            { plugin: { register: './plugins/main.js', options: null } }
        ]
    };

    Glue.compose(manifest, { relativeTo: __dirname }, (err, server) => {

        expect(err).to.not.exist();
        return callback(err, server);
    });
};
    return new Promise((resolve, reject) => {
        let options = {
            relativeTo: __dirname
        };

        /**
         * Load all plugins declared in manifest and start web-server with specified settings.
         */
        Glue.compose(manifest, options,
            (err, server) => {
                if (err) {
                    throw err;
                }

                resolve(server);
            });
    });
Example #13
0
  return new Promise(function(resolve, reject) {
    console.log("Starting server");
    if (cachedServer) {
      return resolve(cachedServer);
    }

    Glue.compose(AppConfig.manifest, glueOptions, function(err, serverInstance) {
      if (err){ console.log("Glue Error!", err); return reject(err); }
      cachedServer = serverInstance;

      serverInstance.start(function(err, startedServer) {
        if (err){ 
          return reject(err); 
        } else {
          console.log("Server started!");
        }
        resolve(cachedServer);
      });
    });
  });
Example #14
0
File: index.js Project: arb/rejoice
    internals.loadPacks(manifest, function (err, options) {

        if (err) {
            console.error(err);
            process.exit(1);
        }

        Glue.compose(manifest, options, function (err, server) {

            Hoek.assert(!err, 'Failed loading plugins: ' + (err && err.message));

            server.start(function (err) {

                Hoek.assert(!err, 'Failed starting server: ' + (err && err.message));

                // Use kill -s QUIT {pid} to kill the servers gracefully

                process.once('SIGQUIT', function () {

                    server.stop(function () {

                        process.exit(0);
                    });
                });

                // Use kill -s SIGUSR2 {pid} to restart the servers

                process.on('SIGUSR2', function () {

                    console.log('Stopping...');
                    server.stop(function () {

                        console.log('Starting...');
                        internals.start();
                    });
                });
            });
        });
    });
Example #15
0
module.exports = () => {
    let manifest = {
        connections: [
            config.server
        ],
        registrations: [{
            plugin: {
                register: './db',
                options: config
            }
        }]
    };

    Glue.compose(manifest, options, (err, server) => {
        if (err) {
            throw err;
        }

        server.start(() => {
            console.log(`Server listning: ${server.info.uri}`);
        });
    });
};
Example #16
0
module.exports = function(options, callback) {
    var config = manifest.get('/'),
        parsedSecureUrl = Url.parse(options.dotStencilFile.storeUrl), //The url to a secure page (prompted as login page)
        parsedNormalUrl = Url.parse(options.dotStencilFile.normalStoreUrl); //The host url of the homepage;

    callback = Hoek.nextTick(callback);

    config.connections[0].port = options.dotStencilFile.port;
    config.plugins['./plugins/router/router.module'].storeUrl = parsedSecureUrl.protocol + '//' + parsedSecureUrl.host;
    config.plugins['./plugins/router/router.module'].normalStoreUrl = parsedNormalUrl.protocol + '//' + parsedNormalUrl.host;
    config.plugins['./plugins/router/router.module'].apiKey = options.dotStencilFile.apiKey;
    config.plugins['./plugins/router/router.module'].port = options.dotStencilFile.port;
    config.plugins['./plugins/router/router.module'].staplerUrl = options.dotStencilFile.staplerUrl;
    config.plugins['./plugins/renderer/renderer.module'].useCache = options.useCache;
    config.plugins['./plugins/renderer/renderer.module'].username = options.dotStencilFile.username;
    config.plugins['./plugins/renderer/renderer.module'].token = options.dotStencilFile.token;
    config.plugins['./plugins/renderer/renderer.module'].customLayouts = options.dotStencilFile.customLayouts;

    Glue.compose(config, {relativeTo: __dirname}, function (err, server) {
        if (err) {
            return callback(err);
        }

        server.start(function () {
            console.log(logo);

            if (options.stencilEditorEnabled) {
                options.themeServer = server;

                return internals.startThemeEditor(options, callback);
            } else {
                return callback(null, server);
            }
        });

    });
};
Example #17
0
exports.init = (manifest, options, next) => {

    Glue.compose(manifest, options, (err, server) => {

        Hoek.assert(!err, err);

        //== Add `onRequest` handling
        server.ext({
            type: 'onRequest',
            method: (request, reply) => {

                // const scoot = request.plugins.scooter.toJSON();
                // const useragent = {
                //     browser: `${scoot.family} v${scoot.major}.${scoot.minor}.${scoot.patch}`,
                //     device: scoot.device.family,
                //     os: `${scoot.os.family} v${scoot.os.major}.${scoot.os.minor}.${scoot.os.patch}`,
                //     source: request.headers['user-agent']
                // };
                const { remoteAddress, referrer } = request.info;

                server.app.logData = {
                    remoteAddress, referrer,
                    host: os.hostname()
                };
                server.app.timer = new Hoek.Timer();

                return reply.continue();
            }
        });

        //== Kickstart my heart
        server.start((_err) => {

            next(_err, server);
        });
    });
};
Example #18
0
'use strict';

var Glue = require('glue');
var manifest = require('./manifest');

var path = require('path');
var plugins = path.join(__dirname, './');

function onError(err) {
  console.log(err);
}

function onSuccess() {
  console.log('Listening on port:8080');
}

Glue.compose(manifest, { relativeTo: plugins }, function(err, server) {
  if (err) {
    console.log(err);
  }

  server.start(function(err) {
    if (err) {
      onError(err);
    }
    else {
      onSuccess();
    }
  });
});
Example #19
0
import 'isomorphic-fetch';

import Boom from 'boom';
import Config from 'config';
import Glue from 'glue';
import Hoek from 'hoek';
import Jwt from 'jsonwebtoken';
import Renderer from './controllers/renderer';
import Twitter from './controllers/twitter';
import settings from './settings';

export default Glue.compose(settings).then((server) => {
  // Configure scheme that will require the user to login with twitter when
  // JWT token is not valid.
  server.auth.scheme('login', () => ({
    authenticate: (request, reply) => {
      server.auth.test('jwt', request, (error, credentials) => {
        if (error) {
          reply.redirect('/auth/twitter');
        } else {
          reply.continue({ credentials });
        }
      });
    },
  }));

  server.auth.strategy('login', 'login', true);

  // Configure JWT session cookie
  server.state(Config.get('jwt.cookie'), {
    ttl: Config.get('jwt.ttl'),
Example #20
0
var Glue = require('glue'),
    manifest = require('./manifest');

Glue.compose(manifest.get('/'), {relativeTo: __dirname}, function (err, server) {
    server.start(function () {
        server.log('info', 'Server running at: ' + server.connections[0].info.uri);
    });
});
Example #21
0
            },
            options: {
                select: 'chalice-api'
            }
        }
    ]

};

module.exports = manifest;

// If this is being required, return the manifest.  Otherwise, start the server.
if (!module.parent) {
    Glue.compose(manifest, { relativeTo: Path.join(__dirname, 'node_modules') }, (err, server) => {

        if (err) {

            throw err;
        }

        server.start((err) => {

            if (err) {
                throw (err);
            }

            console.log('Chalice API Started on ' + Config.server.chaliceApi.uri);
        });
    });
}
Example #22
0
Glue.compose(manifest, { relativeTo: process.cwd() }, (err, server) => {
  server.start(() => { });

  lab.describe("Routes", () => {

    lab.it('Known route should return http status 200', done => {
      server.inject('/api/v1', response => {
        Code.expect(response.statusCode).to.equal(200);
        done();
      });
    });
    
    lab.it('Restricted route should return http status 401 for anonymous user', done => {
      server.inject('/api/v1/restricted', response => {
        Code.expect(response.statusCode).to.equal(401);
        done();
      });
    });
    
    lab.it('Restricted route should return http status 200 for authenticated user', done => {
      var options = {
        method : 'GET',
        url : '/api/v1/restricted',
        headers : {
          'Authorization' : 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwibmFtZSI6IkFudGhvbnkgVmFsaWQgVXNlciIsImlhdCI6MTQyNTQ3MzUzNX0.KA68l60mjiC8EXaC2odnjFwdIDxE__iDu5RwLdN1F2A',
          'Content-Type' : 'application/json; charset=utf-8'
        }
      };
      server.inject(options, response => {
        Code.expect(response.statusCode).to.equal(200);
        done();
      });
    });

    lab.it('Unknown route should return http status 404', done => {
      server.inject('/api/v1/unkownroute', response => {
        Code.expect(response.statusCode).to.equal(404);
        done();
      });
    });
  });
});
Example #23
0
const getserver = function () {

    return Glue.compose(manifest, servOptions);
};
Example #24
0
'use strict';

const Glue = require('glue');

const options = {
    relativeTo: __dirname
};

Glue.compose(require('./plugins.js'), options, (err, server) => {

    if (err) {
        throw err;
    }

    server.start((err) => {

        if (err) {
            throw err;
        }

        console.log(`Server running at: ${server.info.uri}`);
    });

    module.exports = server;

});
Example #25
0
        }
    }],
    registrations : [{
        plugin : { register : 'inert' }
    }, {
        plugin : { register : 'vision' }
    }, {
        plugin : {
            register : 'hapi-router',
            options  : {
                cwd     : __dirname,
                routes  : 'routes/**/*.route.js'
            }
        }
    }]
};

glue.compose(manifest, { relativeTo: __dirname }, function(error, server) {
    if (error) throw error;

    server.views({
        engines     : { ejs: require('ejs') },
        relativeTo  : __dirname,
        path        : 'views'
    });

    server.start(function() {
        console.info('Server running at %s', server.info.uri);
    });
});
Example #26
0
 compose: function (endCompose) {
     Glue.compose(manifest, options, function (err, _server) {
         server = _server;
         endCompose();
     });
 },
Example #27
0
var Glue = require('glue');
var Manifest = require('./manifest');

var options = {
  relativeTo: __dirname
};

Glue.compose(Manifest.get('/'), options, function (err, server) {

    if (err) {
        throw err;
    }

    server.start(function () {

        console.log('Started the plot device.');
    });
});
 * specifying the Hapi server options, connections and plugins
 */
Glue.compose(manifest, options, function (err, server) {
    server.start(function(err) {

        // throw error if the server doesnt start correctly.
        if(err){ throw err }

        // Server started great, log connection information
        else {

            server.route({
                method: 'OPTIONS',
                path: '/{p*}',
                config: {
                    handler: function(request, reply){
                        reply(true)
                            .header('access-control-allow-headers', 'accept, authorization, content-type')
                            .header('access-control-allow-origin', 'http://192.241.169.148:3000')
                            .header('access-control-allow-methods', 'GET, PUT, POST, DELETE, OPTIONS');
                    }
                }
            });

            console.log("CoffeeHouse Radio Started!");
            console.log("Connections:");
            console.log("  >>>  Webapp: " + server.connections[0].info.address + ":" + server.connections[0].info.port);
            console.log("  >>>  API: " + server.connections[1].info.address + ":" + server.connections[1].info.port);
        }
    });
});
Example #29
0
import Glue from 'glue';
import manifest from './manifest';

export default Glue.compose(manifest, {relativeTo: __dirname})
  .then(server => server.start().then(() => {
    server.log(['startup'], `Server started at http://${server.info.address}:${server.info.port}`);
    return server;
  }));
Example #30
0
Glue.compose(config, { relativeTo: Path.join(process.cwd(), 'server') }, (err, server) => {
  if (err) throw err;

  server.views({
    engines: {
      jsx: HapiReactViews
    },
    compileOptions: {
      layoutPath: Path.join(process.cwd(), 'universal', 'containers'),
      layout: 'layout'
    },
    isCached: false,
    path: Path.join(process.cwd(), 'universal')
  });

  // store initial state in hapi request object

  server.ext('onRequest', function (request, reply) {
    request.app.state = {
      meta: {}
    };
    reply.continue();
  });

  // static file root

  server.route({
    method: 'GET',
    path: '/files/{files*}',
    handler: {
      directory: {
        path: 'server/files'
      }
    }
  });

  server.start(() => console.info(server.plugins.blipp.text()));
});