Merge branch 'master' into issue-33
This commit is contained in:
commit
7042165ff2
7 changed files with 464 additions and 15 deletions
|
@ -25,6 +25,11 @@ const conf = convict({
|
|||
sentry_id: {
|
||||
format: String,
|
||||
default: 'https://cdf9a4f43a584f759586af8ceb2194f2@sentry.prod.mozaws.net/238',
|
||||
env: 'P2P_SENTRY_CLIENT'
|
||||
},
|
||||
sentry_dsn: {
|
||||
format: String,
|
||||
default: 'localhost',
|
||||
env: 'P2P_SENTRY_DSN'
|
||||
},
|
||||
env: {
|
||||
|
@ -42,4 +47,5 @@ module.exports = props;
|
|||
|
||||
module.exports.notLocalHost =
|
||||
props.env === 'production' &&
|
||||
props.s3_bucket !== 'localhost';
|
||||
props.s3_bucket !== 'localhost' &&
|
||||
props.sentry_dsn !== 'localhost';
|
||||
|
|
|
@ -7,9 +7,14 @@ const helmet = require('helmet');
|
|||
const bytes = require('bytes');
|
||||
const conf = require('./config.js');
|
||||
const storage = require('./storage.js');
|
||||
const Raven = require('raven');
|
||||
|
||||
const notLocalHost = conf.notLocalHost;
|
||||
|
||||
if (notLocalHost) {
|
||||
Raven.config(conf.sentry_dsn).install();
|
||||
}
|
||||
|
||||
const mozlog = require('./log.js');
|
||||
|
||||
const log = mozlog('portal.server');
|
||||
|
@ -18,10 +23,13 @@ const STATIC_PATH = path.join(__dirname, '../public');
|
|||
|
||||
const app = express();
|
||||
|
||||
app.engine('handlebars', exphbs({
|
||||
defaultLayout: 'main',
|
||||
partialsDir: 'views/partials/'
|
||||
}));
|
||||
app.engine(
|
||||
'handlebars',
|
||||
exphbs({
|
||||
defaultLayout: 'main',
|
||||
partialsDir: 'views/partials/'
|
||||
})
|
||||
);
|
||||
app.set('view engine', 'handlebars');
|
||||
|
||||
app.use(helmet());
|
||||
|
@ -39,9 +47,9 @@ app.get('/', (req, res) => {
|
|||
|
||||
app.get('/exists/:id', (req, res) => {
|
||||
const id = req.params.id;
|
||||
storage.exists(id).then(doesExist => {
|
||||
res.sendStatus(doesExist ? 200 : 404);
|
||||
});
|
||||
storage.exists(id).then(() => {
|
||||
res.sendStatus(200);
|
||||
}).catch(err => res.sendStatus(404));
|
||||
});
|
||||
|
||||
app.get('/download/:id', (req, res) => {
|
||||
|
@ -151,6 +159,10 @@ app.get('/__lbheartbeat__', (req, res) => {
|
|||
res.sendStatus(200);
|
||||
});
|
||||
|
||||
app.get('/__heartbeat__', (req, res) => {
|
||||
storage.ping().then(() => res.sendStatus(200), () => res.sendStatus(500));
|
||||
});
|
||||
|
||||
app.get('/__version__', (req, res) => {
|
||||
res.sendFile(path.join(STATIC_PATH, 'version.json'));
|
||||
});
|
||||
|
|
|
@ -14,7 +14,8 @@ const log = mozlog('portal.storage');
|
|||
|
||||
const redis = require('redis');
|
||||
const redis_client = redis.createClient({
|
||||
host: conf.redis_host
|
||||
host: conf.redis_host,
|
||||
connect_timeout: 10000
|
||||
});
|
||||
|
||||
redis_client.on('error', err => {
|
||||
|
@ -29,7 +30,8 @@ if (notLocalHost) {
|
|||
get: awsGet,
|
||||
set: awsSet,
|
||||
delete: awsDelete,
|
||||
forceDelete: awsForceDelete
|
||||
forceDelete: awsForceDelete,
|
||||
ping: awsPing
|
||||
};
|
||||
} else {
|
||||
module.exports = {
|
||||
|
@ -39,7 +41,8 @@ if (notLocalHost) {
|
|||
get: localGet,
|
||||
set: localSet,
|
||||
delete: localDelete,
|
||||
forceDelete: localForceDelete
|
||||
forceDelete: localForceDelete,
|
||||
ping: localPing
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -49,7 +52,7 @@ function filename(id) {
|
|||
if (!err) {
|
||||
resolve(reply);
|
||||
} else {
|
||||
reject();
|
||||
reject(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -58,7 +61,11 @@ function filename(id) {
|
|||
function exists(id) {
|
||||
return new Promise((resolve, reject) => {
|
||||
redis_client.exists(id, (rediserr, reply) => {
|
||||
resolve(reply === 1);
|
||||
if (reply === 1 && !rediserr) {
|
||||
resolve();
|
||||
} else {
|
||||
reject(rediserr);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -120,6 +127,14 @@ function localForceDelete(id) {
|
|||
});
|
||||
}
|
||||
|
||||
function localPing() {
|
||||
return new Promise((resolve, reject) => {
|
||||
redis_client.ping(err => {
|
||||
return err ? reject() : resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function awsLength(id) {
|
||||
const params = {
|
||||
Bucket: conf.s3_bucket,
|
||||
|
@ -211,3 +226,9 @@ function awsForceDelete(id) {
|
|||
});
|
||||
});
|
||||
}
|
||||
|
||||
function awsPing() {
|
||||
return localPing().then(() =>
|
||||
s3.headBucket({ Bucket: conf.s3_bucket }).promise()
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue