Merge branch 'dev' of ssh://git.verdnatura.es:/var/lib/git/salix into dev
This commit is contained in:
commit
f57e9ecf6f
|
@ -158,8 +158,10 @@ gulp.task('services', function() {
|
||||||
var auth = require('./services/auth/server/server.js');
|
var auth = require('./services/auth/server/server.js');
|
||||||
var client = require('./services/client/server/server.js');
|
var client = require('./services/client/server/server.js');
|
||||||
var server = require('./services/salix/server/server.js');
|
var server = require('./services/salix/server/server.js');
|
||||||
|
var mailer = require('./services/mailer/server.js');
|
||||||
|
|
||||||
auth.start();
|
auth.start();
|
||||||
client.start();
|
client.start();
|
||||||
server.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,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