NewsBlur/node/favicons.js
Samuel Clay 82fecb23a6 Merge branch 'docker_django3.1' into dashboard3
* docker_django3.1: (117 commits)
  Adding docker to node scripts.
  Removing node_modules from repo
  Whoops
  Better logging for broken paypal ipns.
  Adding RSS Tracker for Windows to Goodies.
  Refactoring socketio so real-time works around username restrictions.
  Socket.IO v3 on the server too.
  Switching to Socket.IO v3.
  Haproxy splitting for socketio 3
  Socket.io 3
  Handling missing feed.
  Only nb.local.com uses ports for websockets.
  Adding GrazeTEN
  Full node install on setup.
  Updating toprc
  correct newsblur to newsblur_web in tasks
  Changing mongodb server.
  Fixing toprc
  Attempting to collect queries for 1% of requests by using DEBUG.
  Fixing mongo install.
  ...
2021-01-05 19:36:49 -05:00

89 lines
3 KiB
JavaScript

// Generated by CoffeeScript 2.5.1
(function() {
var DEV, DOCKER, MONGODB_PORT, MONGODB_SERVER, app, log, mongo, server, url;
app = require('express')();
server = require('http').Server(app);
mongo = require('mongodb');
log = require('./log.js');
DEV = process.env.NODE_ENV === 'development';
DOCKER = process.env.NODE_ENV === "docker";
MONGODB_SERVER = DEV ? 'localhost' : 'db_mongo';
MONGODB_PORT = parseInt(process.env.MONGODB_PORT || 27017, 10);
log.debug("Starting NewsBlur Favicon server...");
if (!DEV && !process.env.NODE_ENV) {
log.debug("Specify NODE_ENV=<development,docker,production>");
return;
} else if (DEV) {
log.debug("Running as development server");
} else if (DOCKER) {
log.debug("Running as docker server");
} else {
log.debug("Running as production server");
}
if (DEV || DOCKER) {
url = `mongodb://${MONGODB_SERVER}:${MONGODB_PORT}/newsblur`;
} else {
url = `mongodb://${MONGODB_SERVER}:${MONGODB_PORT}/newsblur?replicaSet=nbset&readPreference=secondaryPreferred`;
}
(async function() {
var client, collection, db, err;
try {
client = mongo.MongoClient(url, {
useUnifiedTopology: true
});
await client.connect();
} catch (error) {
err = error;
log.debug(`Error connecting to Mongo: ${err}`);
return;
}
db = client.db("newsblur");
collection = db.collection("feed_icons");
log.debug(`Connected to ${db != null ? db.serverConfig.s.seedlist[0].host : void 0}:${db != null ? db.serverConfig.s.seedlist[0].port : void 0}`);
if (err) {
log.debug(` ***> Error connecting: ${err}`);
}
app.get(/\/rss_feeds\/icon\/(\d+)\/?/, (req, res) => {
var etag, feed_id;
feed_id = parseInt(req.params[0], 10);
etag = req.header('If-None-Match');
log.debug(`Feed: ${feed_id} ` + (etag ? ` / ${etag}` : ""));
return collection.findOne({
_id: feed_id
}, function(err, docs) {
var body;
if (!err && etag && docs && (docs != null ? docs.color : void 0) === etag) {
log.debug(`Cached: ${feed_id}, etag: ${etag}/${docs != null ? docs.color : void 0} ` + (err ? `(err: ${err})` : ""));
return res.sendStatus(304);
} else if (!err && docs && docs.data) {
log.debug(`Req: ${feed_id}, etag: ${etag}/${docs != null ? docs.color : void 0} ` + (err ? `(err: ${err})` : ""));
res.header('etag', docs.color);
body = new Buffer(docs.data, 'base64');
res.set("Content-Type", "image/png");
return res.status(200).send(body);
} else {
log.debug(`Redirect: ${feed_id}, etag: ${etag}/${docs != null ? docs.color : void 0} ` + (err ? `(err: ${err})` : ""));
if (DEV) {
return res.redirect('/media/img/icons/circular/world.png');
} else {
return res.redirect('https://www.newsblur.com/media/img/icons/circular/world.png');
}
}
});
});
return app.listen(3030);
})();
}).call(this);