diff --git a/config/production.json b/config/production.json index 6ea5cdb5..848f1700 100644 --- a/config/production.json +++ b/config/production.json @@ -12,7 +12,7 @@ "PublishUploadPath": "/home/lbry/Downloads/" }, "Logging": { - "LogLevel": "debug", + "LogLevel": "verbose", "LogDirectory": "/home/lbry/Logs" } } diff --git a/controllers/statsController.js b/controllers/statsController.js index 2996afd5..eabb7cce 100644 --- a/controllers/statsController.js +++ b/controllers/statsController.js @@ -27,33 +27,37 @@ module.exports = { logger.error('sequelize error', error); }); }, - sendGoogleAnalytics (action, ip, originalUrl) { + sendGoogleAnalytics (action, headers, ip, originalUrl) { const visitorId = ip.replace(/\./g, '-'); const visitor = ua(googleApiKey, visitorId, { strictCidFormat: false, https: true }); + logger.verbose('visitor', visitor); + let params; switch (action) { case 'serve': - visitor.event('serve', originalUrl, (err) => { - if (err) { - logger.error('Google Analytics Event Error >>', err); - } - }); - break; - case 'show': - visitor.pageview(originalUrl, 'https://spee.ch', 'show route', (err) => { - if (err) { - logger.error('Google Analytics Pageview Error >>', err); - } - }); + params = { + ec : 'serve', + ea : originalUrl, + uip: ip, + ua : headers['user-agent'], + ul : headers['accept-language'], + }; break; case 'publish': - visitor.event('publish', originalUrl, (err) => { - if (err) { - logger.error('Google Analytics Event Error >>', err); - } - }); + params = { + ec : 'publish', + ea : originalUrl, + uip: ip, + ua : headers['user-agent'], + ul : headers['accept-language'], + }; break; default: break; } + visitor.event(params, (err) => { + if (err) { + logger.error('Google Analytics Event Error >>', err); + } + }); }, getStatsSummary () { logger.debug('retrieving site statistics'); diff --git a/routes/home-routes.js b/routes/home-routes.js index f0891a01..c1ace31b 100644 --- a/routes/home-routes.js +++ b/routes/home-routes.js @@ -1,11 +1,9 @@ const logger = require('winston'); -const { postToStats, sendGoogleAnalytics } = require('../controllers/statsController.js'); +const { postToStats } = require('../controllers/statsController.js'); module.exports = app => { // route for the home page app.get('/', ({ headers, ip, originalUrl }, res) => { - // google analytics - sendGoogleAnalytics('serve', ip, originalUrl); // logging logger.verbose(`GET request on ${originalUrl} from ${ip}`); // send response @@ -13,8 +11,6 @@ module.exports = app => { }); // a catch-all route if someone visits a page that does not exist app.use('*', ({ originalUrl, ip }, res) => { - // google analytics - sendGoogleAnalytics('serve', ip, originalUrl); // logging logger.error(`Get request on ${originalUrl} from ${ip} which was a 404`); // post to stats diff --git a/routes/serve-routes.js b/routes/serve-routes.js index f6ecb35a..d81cc818 100644 --- a/routes/serve-routes.js +++ b/routes/serve-routes.js @@ -32,17 +32,18 @@ function serveFile ({ fileName, fileType, filePath }, res) { res.status(200).sendFile(filePath, options); } -function sendAnalyticsAndLog (ip, originalUrl) { +function sendAnalyticsAndLog (headers, ip, originalUrl) { + logger.verbose('headers', headers); // google analytics - sendGoogleAnalytics('serve', ip, originalUrl); + sendGoogleAnalytics('serve', headers, ip, originalUrl); // logging logger.verbose(`GET request on ${originalUrl} from ${ip}`); } module.exports = (app) => { // route to fetch one free public claim - app.get('/:name/:claim_id', ({ ip, originalUrl, params }, res) => { - sendAnalyticsAndLog(ip, originalUrl); + app.get('/:name/:claim_id', ({ headers, ip, originalUrl, params }, res) => { + sendAnalyticsAndLog(headers, ip, originalUrl); // begin image-serve processes serveController .getClaimByClaimId(params.name, params.claim_id) @@ -60,8 +61,8 @@ module.exports = (app) => { }); }); // route to fetch one free public claim - app.get('/:name', ({ ip, originalUrl, params }, res) => { - sendAnalyticsAndLog(ip, originalUrl); + app.get('/:name', ({ headers, ip, originalUrl, params }, res) => { + sendAnalyticsAndLog(headers, ip, originalUrl); // begin image-serve processes serveController .getClaimByName(params.name) diff --git a/routes/show-routes.js b/routes/show-routes.js index f89e600c..6a791d43 100644 --- a/routes/show-routes.js +++ b/routes/show-routes.js @@ -1,26 +1,18 @@ const logger = require('winston'); const errorHandlers = require('../helpers/libraries/errorHandlers.js'); const { getAllClaims } = require('../controllers/showController.js'); -const { getStatsSummary, postToStats, sendGoogleAnalytics } = require('../controllers/statsController.js'); - -function sendAnalyticsAndLog (ip, originalUrl) { - // google analytics - sendGoogleAnalytics('show', ip, originalUrl); - // logging - logger.verbose(`POST request on ${originalUrl} from ${ip}`); - // get and serve the content -} +const { getStatsSummary, postToStats } = require('../controllers/statsController.js'); module.exports = (app) => { // route to show 'about' page for spee.ch app.get('/about', ({ ip, originalUrl }, res) => { - sendAnalyticsAndLog(ip, originalUrl); + logger.verbose(`POST request on ${originalUrl} from ${ip}`); // get and render the content res.status(200).render('about'); }); // route to show the meme-fodder meme maker app.get('/meme-fodder/play', ({ ip, originalUrl }, res) => { - sendAnalyticsAndLog(ip, originalUrl); + logger.verbose(`POST request on ${originalUrl} from ${ip}`); // get and render the content getAllClaims('meme-fodder') .then(orderedFreePublicClaims => { @@ -33,7 +25,7 @@ module.exports = (app) => { }); // route to show statistics for spee.ch app.get('/stats', ({ ip, originalUrl }, res) => { - sendAnalyticsAndLog(ip, originalUrl); + logger.verbose(`POST request on ${originalUrl} from ${ip}`); // get and render the content getStatsSummary() .then(result => { @@ -46,7 +38,7 @@ module.exports = (app) => { }); // route to display all free public claims at a given name app.get('/:name/all', ({ ip, originalUrl, params }, res) => { - sendAnalyticsAndLog(ip, originalUrl); + logger.verbose(`POST request on ${originalUrl} from ${ip}`); // get and render the content getAllClaims(params.name) .then(orderedFreePublicClaims => {