Compare commits

...

9 Commits

Author SHA1 Message Date
John Crepezzi 339271e819 Integrate sentry 2020-10-06 12:08:59 -04:00
John Crepezzi 319141afd0 Merge branch 'master' into production 2020-10-06 00:55:08 -04:00
John Crepezzi d20c1c609c Remove engine definition 2020-10-06 00:46:14 -04:00
John Crepezzi 4e3620139d Merge branch 'master' into production 2020-10-06 00:42:56 -04:00
John Crepezzi 32df3370e2 Fix header name 2017-05-02 20:08:03 -04:00
John Crepezzi d81195856a Log ip 2017-05-02 20:08:03 -04:00
John Crepezzi 6ed427658e Remove npm 2017-05-02 20:08:03 -04:00
John Crepezzi 08eddc7e80 Added pg 2017-05-02 20:08:03 -04:00
John Crepezzi d040dedc6e Production uses postgres 2017-05-02 20:07:40 -04:00
5 changed files with 156 additions and 18 deletions

View File

@ -33,7 +33,8 @@
},
"storage": {
"type": "file"
"type": "postgres",
"expire": 2592000
},
"documents": {

View File

@ -69,7 +69,8 @@ DocumentHandler.prototype.handlePost = function (request, response) {
_this.chooseKey(function (key) {
_this.store.set(key, buffer, function (res) {
if (res) {
winston.verbose('added document', { key: key });
var ip = request.headers['x-forwarded-for'] || request.ip;
winston.verbose('added document', { key: key, ip: ip });
response.writeHead(200, { 'content-type': 'application/json' });
response.end(JSON.stringify({ key: key }));
}

149
package-lock.json generated
View File

@ -4,6 +4,103 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@sentry/core": {
"version": "5.25.0",
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.25.0.tgz",
"integrity": "sha512-hY6Zmo7t/RV+oZuvXHP6nyAj/QnZr2jW0e7EbL5YKMV8q0vlnjcE0LgqFXme726OJemoLk67z+sQOJic/Ztehg==",
"requires": {
"@sentry/hub": "5.25.0",
"@sentry/minimal": "5.25.0",
"@sentry/types": "5.25.0",
"@sentry/utils": "5.25.0",
"tslib": "^1.9.3"
}
},
"@sentry/hub": {
"version": "5.25.0",
"resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.25.0.tgz",
"integrity": "sha512-kOlOiJV8wMX50lYpzMlOXBoH7MNG0Ho4RTusdZnXZBaASq5/ljngDJkLr6uylNjceZQP21wzipCQajsJMYB7EQ==",
"requires": {
"@sentry/types": "5.25.0",
"@sentry/utils": "5.25.0",
"tslib": "^1.9.3"
}
},
"@sentry/minimal": {
"version": "5.25.0",
"resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.25.0.tgz",
"integrity": "sha512-9JFKuW7U+1vPO86k3+XRtJyooiVZsVOsFFO4GulBzepi3a0ckNyPgyjUY1saLH+cEHx18hu8fGgajvI8ANUF2g==",
"requires": {
"@sentry/hub": "5.25.0",
"@sentry/types": "5.25.0",
"tslib": "^1.9.3"
}
},
"@sentry/node": {
"version": "5.25.0",
"resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.25.0.tgz",
"integrity": "sha512-zxoUVdAFTeK9kdEGY95TMs6g8Zx/P55HxG4gHD80BG/XIEvWiGPcGCLOspO4IdGqYXkGS74KfBOIXmmCawWwLg==",
"requires": {
"@sentry/core": "5.25.0",
"@sentry/hub": "5.25.0",
"@sentry/tracing": "5.25.0",
"@sentry/types": "5.25.0",
"@sentry/utils": "5.25.0",
"cookie": "^0.4.1",
"https-proxy-agent": "^5.0.0",
"lru_map": "^0.3.3",
"tslib": "^1.9.3"
}
},
"@sentry/tracing": {
"version": "5.25.0",
"resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.25.0.tgz",
"integrity": "sha512-KcyHEGFpqSDubHrdWT/vF2hKkjw/ts6NpJ6tPDjBXUNz98BHdAyMKtLOFTCeJFply7/s5fyiAYu44M+M6IG3Bw==",
"requires": {
"@sentry/hub": "5.25.0",
"@sentry/minimal": "5.25.0",
"@sentry/types": "5.25.0",
"@sentry/utils": "5.25.0",
"tslib": "^1.9.3"
}
},
"@sentry/types": {
"version": "5.25.0",
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.25.0.tgz",
"integrity": "sha512-8M4PREbcar+15wrtEqcwfcU33SS+2wBSIOd/NrJPXJPTYxi49VypCN1mZBDyWkaK+I+AuQwI3XlRPCfsId3D1A=="
},
"@sentry/utils": {
"version": "5.25.0",
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.25.0.tgz",
"integrity": "sha512-Hz5spdIkMSRH5NR1YFOp5qbsY5Ud2lKhEQWlqxcVThMG5YNUc10aYv5ijL19v0YkrC2rqPjCRm7GrVtzOc7bXQ==",
"requires": {
"@sentry/types": "5.25.0",
"tslib": "^1.9.3"
}
},
"agent-base": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz",
"integrity": "sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg==",
"requires": {
"debug": "4"
},
"dependencies": {
"debug": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
"integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"ansi-colors": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
@ -287,6 +384,11 @@
"resolved": "https://registry.npmjs.org/connect-route/-/connect-route-0.1.5.tgz",
"integrity": "sha1-48IYMZ0uiKiprgsOD+Cacpw5dEo="
},
"cookie": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
"integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
@ -618,6 +720,30 @@
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true
},
"https-proxy-agent": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
"integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
"requires": {
"agent-base": "6",
"debug": "4"
},
"dependencies": {
"debug": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
"integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"ieee754": {
"version": "1.1.13",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
@ -815,6 +941,11 @@
"yallist": "^2.1.2"
}
},
"lru_map": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz",
"integrity": "sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0="
},
"mime": {
"version": "2.4.6",
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
@ -1129,19 +1260,6 @@
"picomatch": "^2.2.1"
}
},
"redis": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/redis/-/redis-0.8.1.tgz",
"integrity": "sha1-FZ8hMFmaL3GeRLA/C0t2EvmS/LI="
},
"redis-url": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/redis-url/-/redis-url-0.1.0.tgz",
"integrity": "sha1-TaXlsYG2wMrW4aVcf1Co5u53ebs=",
"requires": {
"redis": ">= 0.0.1"
}
},
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@ -1297,6 +1415,11 @@
"is-number": "^7.0.0"
}
},
"tslib": {
"version": "1.14.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.0.tgz",
"integrity": "sha512-+Zw5lu0D9tvBMjGP8LpvMb0u2WW2QV3y+D8mO6J+cNzCYIN4sVy43Bf9vl92nqFahutN0I8zHa7cc4vihIshnw=="
},
"uglify-js": {
"version": "3.1.6",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.6.tgz",

View File

@ -19,11 +19,11 @@
"connect-ratelimit": "0.0.7",
"connect-route": "0.1.5",
"pg": "^6.0.0",
"redis": "0.8.1",
"redis-url": "0.1.0",
"st": "^2.0.0",
"winston": "^2.0.0",
"uglify-js": "3.1.6",
"winston": "^2.0.0"
"@sentry/node": "*",
"@sentry/tracing": "*"
},
"devDependencies": {
"mocha": "^8.1.3"

View File

@ -10,6 +10,13 @@ var connect_rate_limit = require('connect-ratelimit');
var DocumentHandler = require('./lib/document_handler');
const Sentry = require('@sentry/node');
const sentryEnabled = process.env.SENTRY_DSN;
if (sentryEnabled) {
Sentry.init({dsn: process.env.SENTRY_DSN});
}
// Load the configuration and set some defaults
var config = JSON.parse(fs.readFileSync('./config.js', 'utf8'));
config.port = process.env.PORT || config.port || 7777;
@ -100,6 +107,9 @@ var documentHandler = new DocumentHandler({
var app = connect();
// Include sentry request handler if enabled
if (sentryEnabled) app.use(Sentry.Handlers.requestHandler());
// Rate limit all requests
if (config.rateLimits) {
config.rateLimits.end = true;
@ -150,6 +160,9 @@ app.use(connect_st({
index: 'index.html'
}));
// Include sentry error handler if enabled
if (sentryEnabled) { app.use(Sentry.Handlers.errorHandler()); }
http.createServer(app).listen(config.port, config.host);
winston.info('listening on ' + config.host + ':' + config.port);