Merge branch 'dev' of ssh://git.verdnatura.es:/var/lib/git/salix into dev
This commit is contained in:
commit
0cfa52a624
|
@ -158,8 +158,10 @@ gulp.task('services', function() {
|
|||
var auth = require('./services/auth/server/server.js');
|
||||
var client = require('./services/client/server/server.js');
|
||||
var server = require('./services/salix/server/server.js');
|
||||
var mailer = require('./services/mailer/server.js');
|
||||
|
||||
auth.start();
|
||||
client.start();
|
||||
server.start();
|
||||
mailer.start();
|
||||
});
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
node_modules
|
|
@ -0,0 +1,30 @@
|
|||
var express = require('express');
|
||||
var router = new express.Router();
|
||||
var mail = require('../mail.js');
|
||||
var database = require('../database.js');
|
||||
var template = require('../template.js');
|
||||
|
||||
// Escrito de cambios en méto de pago del cliente
|
||||
router.post('/paymentUpdate', function(request, response) {
|
||||
database.pool.query('SELECT Cliente, `e-mail` AS email FROM Clientes WHERE Id_Cliente = ?', [request.body.user], function(error, rs) {
|
||||
var params = {
|
||||
clientName: rs[0].Cliente
|
||||
};
|
||||
|
||||
template.getTemplate('paymentUpdate', params, function(body) {
|
||||
var data = {
|
||||
recipient: rs[0].email,
|
||||
subject: 'Cambios en las condiciones de pago',
|
||||
body: body
|
||||
};
|
||||
|
||||
if (mail.send(data)) {
|
||||
response.json({status: "OK"});
|
||||
} else {
|
||||
response.json({status: "ERROR"});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = router;
|
|
@ -0,0 +1,8 @@
|
|||
var express = require('express');
|
||||
var router = new express.Router();
|
||||
|
||||
router.get('/test', function(request, response) {
|
||||
response.send("test");
|
||||
});
|
||||
|
||||
module.exports = router;
|
|
@ -0,0 +1,35 @@
|
|||
<div style="width:600px;font-family:arial,sans-serif;font-size:16px;color:#555;margin:0 auto">
|
||||
<div style="padding:20px;text-align: center;border-bottom: 1px solid #CCC">
|
||||
<img class="logo" src="https://verdnatura.es/image/logo.png" style="width:307px;margin-bottom: 5px"/>
|
||||
<div style="color: #CCC">
|
||||
<span style="display: block;color:#555;font-size: 10px">Verdnatura Levante SL, B97367486</span>
|
||||
<span style="display: block;color:#555;font-size: 10px">Avda. Espioca 100, 46460 Silla (Valencia)</span>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div style="text-align:center">
|
||||
<h1 style="color: #999;font-size: 34px;margin-top: 35px;margin-bottom: 35px">CAMBIOS EN CONDICIONES DE PAGO</h1>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Estimado cliente <strong style="font-size: 20px">{{clientName}}</strong>
|
||||
</p>
|
||||
|
||||
<p style="text-align: justify">
|
||||
Se han cambiado las condiciones de pago, estas son las nuevas:
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<div style="font-size:10px;font-weight:100;border-top: 1px solid #CCC;margin-top: 35px">
|
||||
<p style="text-align: justify">Este mensaje es privado y confidencial, y debe ser utilizado exclusivamente por la persona destinataria del mismo.
|
||||
Si usted ha recibido este mensaje por error, le rogamos lo comunique al remitente y borre dicho mensaje y cualquier
|
||||
documento adjunto que pudiera contener. Verdnatura Levante SL no renuncia a la confidencialidad ni a ningún privilegio
|
||||
por causa de transmisión errónea o mal funcionamiento. Igualmente no se hace responsable de los cambios, alteraciones,
|
||||
errores u omisiones que pudieran hacerse al mensaje una vez enviado.</p>
|
||||
|
||||
<p style="text-align: justify">En cumplimiento de lo dispuesto en la Ley Orgánica 15/1999, de Protección de Datos de Carácter Personal, le comunicamos
|
||||
que los datos personales que facilite se incluirán en ficheros automatizados de VERDNATURA LEVANTE S.L., pudiendo en todo momento
|
||||
ejercitar los derechos de acceso, rectificación, cancelación y oposición, comunicándolo por escrito al domicilio social de la entidad.
|
||||
La finalidad del fichero es la gestión administrativa, contabilidad, y facturación.</p>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,11 @@
|
|||
module.exports = {
|
||||
|
||||
/**
|
||||
* Obtiene las variables de entorno
|
||||
* @param {String} env - Nombre de la variable de entorno
|
||||
* @return {String} Valor de la variable de entorno
|
||||
*/
|
||||
getEnv: function(env) {
|
||||
return process.env[env];
|
||||
}
|
||||
};
|
|
@ -0,0 +1,13 @@
|
|||
var Settings = require('../Settings.js');
|
||||
|
||||
module.exports = {
|
||||
|
||||
/**
|
||||
* Imprimir cabecera
|
||||
*/
|
||||
printHeader: function() {
|
||||
console.log('##########################################################');
|
||||
console.log('## ' + Settings.name + ' ##');
|
||||
console.log('##########################################################');
|
||||
}
|
||||
};
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"name": "MailServer",
|
||||
"version": "0.0.1",
|
||||
"port": 3003,
|
||||
"debug": true,
|
||||
"smtp": {
|
||||
"host": "smtp.verdnatura.es",
|
||||
"port": 465,
|
||||
"secure": true,
|
||||
"auth": {
|
||||
"user": "",
|
||||
"pass": ""
|
||||
},
|
||||
"tls":{
|
||||
"rejectUnauthorized": false
|
||||
}
|
||||
},
|
||||
"senderMail": "nocontestar@verdnatura.es",
|
||||
"senderName": "VerdNatura",
|
||||
"mysql": {
|
||||
"host": "test-db.verdnatura.es",
|
||||
"port": 3307,
|
||||
"user": "",
|
||||
"password": "",
|
||||
"database": "vn2008"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
var mysql = require('mysql');
|
||||
var settings = require('./Settings.js');
|
||||
var logger = require('./Logger.js');
|
||||
|
||||
module.exports = {
|
||||
|
||||
/**
|
||||
* Variable de instancia del pool
|
||||
*/
|
||||
pool: null,
|
||||
|
||||
/**
|
||||
* Iniciar pool de conexión con la base de datos
|
||||
*/
|
||||
init: function() {
|
||||
this.pool = mysql.createPool(settings.mysql);
|
||||
|
||||
this.pool.getConnection(function(error, connection) {
|
||||
if (error) {
|
||||
logger.print(__LOG_ERROR, 'No se ha podido establecer la conexión con la base de datos. ' + error.code);
|
||||
} else {
|
||||
logger.print(__LOG_INFO, 'Conexión con la base de datos establecida');
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
|
@ -0,0 +1,28 @@
|
|||
|
||||
// Tipos de advertencias
|
||||
global.__LOG_INFO = 1;
|
||||
global.__LOG_WARNING = 2;
|
||||
global.__LOG_ERROR = 3;
|
||||
|
||||
module.exports = {
|
||||
|
||||
/**
|
||||
* Imprimir advertencia directamente en consola
|
||||
* @param {Integer} type - Constante tipo de advertencia
|
||||
*/
|
||||
print: function(type, message)
|
||||
{
|
||||
if (type == __LOG_INFO)
|
||||
{
|
||||
console.log('[INFORMACIÓN] -> ' + message);
|
||||
}
|
||||
else if(type == __LOG_WARNING)
|
||||
{
|
||||
console.log('[ADVERTENCIA] -> ' + message);
|
||||
}
|
||||
else if(type == __LOG_ERROR)
|
||||
{
|
||||
console.log('[ERROR] -> ' + message);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
var nodemailer = require('nodemailer');
|
||||
var settings = require('./Settings.js');
|
||||
var logger = require('./Logger.js');
|
||||
|
||||
// Módulo para el envío de emails
|
||||
module.exports = {
|
||||
|
||||
transporter: null,
|
||||
|
||||
/**
|
||||
* Si todavía no está inicializada la configuración,
|
||||
* carga el fichero de configuración.
|
||||
*/
|
||||
init: function() {
|
||||
this.transporter = nodemailer.createTransport(settings.smtp);
|
||||
|
||||
this.transporter.verify(function(error, success) {
|
||||
if (error) {
|
||||
logger.print(__LOG_ERROR, error);
|
||||
} else {
|
||||
logger.print(__LOG_INFO, 'Conexión SMTP establecida');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Envia un email con los datos recibidos desde un vector.
|
||||
* @param {Object} data - Datos para el envío del email
|
||||
*/
|
||||
send: function(data) {
|
||||
let mailOptions = {
|
||||
from: '"' + settings.senderName + '" <' + settings.senderMail + '>',
|
||||
to: data.recipient,
|
||||
subject: data.subject,
|
||||
html: data.body
|
||||
};
|
||||
|
||||
this.transporter.sendMail(mailOptions, (error, info) => {
|
||||
if (error) {
|
||||
logger.print(__LOG_ERROR, error);
|
||||
} else if (Settings.debug) {
|
||||
logger.print(__LOG_INFO, 'Se ha enviado el email ' + info.messageId + ' [' + info.response + ']');
|
||||
|
||||
return true;
|
||||
}
|
||||
});
|
||||
},
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
var express = require('express');
|
||||
var router = new express.Router();
|
||||
var settings = require('./settings.js');
|
||||
|
||||
// Página por defecto
|
||||
router.get('/', function(request, response) {
|
||||
response.send(Settings.name + ' v' + settings.version);
|
||||
});
|
||||
|
||||
// Rutas de los escritos.
|
||||
router.use('/manuscript', require('./Route/Manuscript.js'));
|
||||
|
||||
// Rutas de las notificaciones.
|
||||
router.use('/notification', require('./Route/Notification.js'));
|
||||
|
||||
module.exports = router;
|
|
@ -0,0 +1,2 @@
|
|||
// Módulo de configuración
|
||||
module.exports = require('./config.json');
|
|
@ -0,0 +1,48 @@
|
|||
var fs = require('fs');
|
||||
var mustache = require('mustache');
|
||||
var database = require('./database.js');
|
||||
var logger = require('./logger.js');
|
||||
|
||||
var Template = {
|
||||
|
||||
/**
|
||||
* Obtiene la plantilla
|
||||
* @param {String} name - Nombre de la plantilla
|
||||
* @param {Object} params - Datos a reemplazar.
|
||||
* @param {Object} callback - Callback
|
||||
*/
|
||||
getTemplate: function(name, params, callback) {
|
||||
database.pool.query('SELECT name, attachmentPath FROM vn.mailTemplates WHERE name = ?', [name], function(error, rs)
|
||||
{
|
||||
if (rs.length == 0) {
|
||||
logger.print(__LOG_ERROR, 'La plantilla ' + name + ' no existe');
|
||||
return;
|
||||
}
|
||||
|
||||
var path = './Application/Template/' + rs[0].name + '.html';
|
||||
|
||||
if (!fs.existsSync(path)) {
|
||||
logger.print(__LOG_ERROR, 'No se ha podido cargar la plantilla ' + name + '.html');
|
||||
} else {
|
||||
Template.render(path, params, function(body) {
|
||||
callback(body);
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Renderiza las plantillas
|
||||
* @param {String} path - Ruta de la plantilla
|
||||
* @param {Object} params - Listado de parámetros a remplazar
|
||||
* @param {Object} callback - Callback
|
||||
*/
|
||||
render: function(path, params, callback) {
|
||||
fs.readFile(path, 'utf8', function(error, body) {
|
||||
mustache.parse(body);
|
||||
callback(mustache.render(body, params));
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = Template;
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"name": "MailServer",
|
||||
"version": "0.0.1",
|
||||
"description": "Servidor de envío de correos",
|
||||
"main": "server.js",
|
||||
"dependencies": {
|
||||
"body-parser": "^1.17.2",
|
||||
"express": "^4.15.3",
|
||||
"mustache": "^2.3.0",
|
||||
"mysql": "^2.13.0",
|
||||
"nodemailer": "^4.0.1"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
/**
|
||||
* Módulos necesarios
|
||||
*/
|
||||
var express = require('express');
|
||||
var app = module.exports = express();
|
||||
var bodyParser = require('body-parser');
|
||||
|
||||
var settings = require('./Application/settings.js');
|
||||
var mail = require('./Application/mail.js');
|
||||
var logger = require('./Application/logger.js');
|
||||
var database = require('./Application/database.js');
|
||||
var terminal = require('./Application/Util/terminal.js');
|
||||
|
||||
// Middleware
|
||||
app.use(bodyParser.json());
|
||||
app.use(bodyParser.urlencoded({extended: true}));
|
||||
|
||||
// Cargar rutas
|
||||
app.use('/', require('./Application/router.js'));
|
||||
|
||||
|
||||
app.start = function() {
|
||||
return app.listen(settings.port, function() {
|
||||
terminal.printHeader();
|
||||
mail.init();
|
||||
database.init();
|
||||
logger.print(__LOG_INFO, 'Servidor de correo iniciado en el puerto ' + settings.port);
|
||||
if (settings.debug) {
|
||||
logger.print(__LOG_WARNING, 'El modo debug está activado');
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
if (require.main === module) {
|
||||
app.start();
|
||||
}
|
||||
|
Loading…
Reference in New Issue