12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- const express = require('express')
- const app = express()
- app.use(express.json())
- app.use(express.static('public'));
- const port = 3104
- var chalk = require("chalk");
- var db = require("kairoscope-db-models");
- var e = chalk.red('ERROR:');
- db.start().then(() => {
- app.get('/', (req, res) => {
- res.send("Mail Analytics Service");
- })
- app.get('/track/:id/image.png', function(req, res, next){
- var id = req.params.id;
- res.sendFile('image.png', {root: './public'});
- db.SentMail.findOne({message_id: id}).then((message) => {
- if(message != undefined) {
- message.opened = true;
- message.save().then((message) => {
- console.log(`Tracking email ${chalk.italic(id)}`);
- }).catch((error) => { console.log(error); });
- } else {
- console.log(`${e} Tracking code not in database! (${chalk.italic(id)})`);
- }
- }).catch((error) => { console.log(error); });
- });
- app.get('/track/:id/redirect', function(req, res, next){
- var id = req.params.id;
- var url = req.query.url;
- var link_title = req.query.link;
- res.redirect(url);
- console.log(`Redirecting to ${chalk.green(`\'${url}\'`)}`);
- db.SentMail.findOne({message_id: id}).then((message) => {
- if(message != undefined) {
- var duplicate = false;
- var link = undefined;
- for (let i = 0; i < message.opened_links.length; i++) {
- link = message.opened_links[i];
- if(link.title == link_title){
- duplicate = true;
- link.clicks += 1;
- link.updated_date = Date.now();
- break;
- }
- }
- if(duplicate == false){
- link = {
- title: link_title,
- url: url,
- clicks: 1,
- updated_date: Date.now(),
- }
- message.opened_links.push(link);
- }
- message.save().then((message) => {
- console.log(`Tracking link click ${chalk.italic(link_title)} from email ${chalk.italic(id)} (clicked ${link.clicks}x)`);
- }).catch((error) => { console.log(error); });
- } else {
- console.log(`${e} Tracking code not in database! (${chalk.italic(id)})`);
- }
- }).catch((error) => { console.log(error); });
- });
-
-
- app.listen(port, () => {
- console.log(`Mail Analytics Service listening at ${chalk.cyan(`http://localhost:${port}`)}`);
- })
- })
|