joyent-portal/bundle/src/index.js

107 lines
2.1 KiB
JavaScript
Raw Normal View History

2018-02-15 22:05:29 +02:00
'use strict';
2018-01-08 17:13:05 +02:00
const Brule = require('brule');
const Hapi = require('hapi');
const Rollover = require('rollover');
const Brok = require('brok');
2018-02-15 22:05:29 +02:00
const { homedir } = require('os');
const { join } = require('path');
const Sso = require('hapi-triton-auth');
2018-01-08 17:13:05 +02:00
const Nav = require('joyent-navigation');
const Api = require('cloudapi-gql');
const {
PORT = 3069,
COOKIE_PASSWORD,
COOKIE_DOMAIN,
SDC_KEY_PATH,
SDC_ACCOUNT,
SDC_KEY_ID,
SDC_URL,
BASE_URL = `http://0.0.0.0:${PORT}`,
ROLLBAR_SERVER_TOKEN,
NODE_ENV = 'development',
CONSOLE = 'my-joy-beta'
2018-01-08 17:13:05 +02:00
} = process.env;
const Ui = require(CONSOLE);
2018-01-08 17:13:05 +02:00
const server = Hapi.server({
compression: {
minBytes: 1
},
debug: {
request: ['error']
},
2018-01-08 17:13:05 +02:00
port: PORT,
host: '127.0.0.1'
});
2018-02-19 16:59:31 +02:00
async function main() {
2018-01-08 17:13:05 +02:00
await server.register([
{
plugin: Brok
},
2018-02-15 22:05:29 +02:00
{
plugin: Rollover,
options: {
rollbar: {
accessToken: ROLLBAR_SERVER_TOKEN,
reportLevel: 'error'
}
}
},
2018-01-08 17:13:05 +02:00
{
plugin: Brule,
options: {
auth: false
}
},
{
plugin: Sso,
options: {
2018-02-28 00:40:51 +02:00
ssoUrl: 'https://sso.joyent.com',
baseUrl: BASE_URL,
apiBaseUrl: SDC_URL,
keyId: '/' + SDC_ACCOUNT + '/keys/' + SDC_KEY_ID,
keyPath: SDC_KEY_PATH || join(homedir(), '.ssh/id_rsa'),
permissions: { cloudapi: ['/my/*'] },
isDev: NODE_ENV === 'development',
2018-01-08 17:13:05 +02:00
cookie: {
isHttpOnly: true,
2018-02-28 00:40:51 +02:00
isSecure: false,
password: COOKIE_PASSWORD,
ttl: 1000 * 60 * 60, // 1 hour
domain: COOKIE_DOMAIN
2018-01-08 17:13:05 +02:00
}
}
},
{
plugin: Nav
},
{
plugin: Ui
},
{
plugin: Api,
options: {
keyId: '/' + SDC_ACCOUNT + '/keys/' + SDC_KEY_ID,
keyPath: SDC_KEY_PATH || join(homedir(), '.ssh/id_rsa'),
apiBaseUrl: SDC_URL
}
2018-01-08 17:13:05 +02:00
}
]);
server.auth.default('sso');
2018-02-19 16:59:31 +02:00
process.on('unhandledRejection', err => {
2018-02-15 22:05:29 +02:00
server.log(['error'], err);
});
2018-01-08 17:13:05 +02:00
await server.start();
console.log(`server started at http://localhost:${server.info.port}`);
2018-02-15 22:05:29 +02:00
}
main();