index.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. var express = require('express');
  2. var fileUpload = require('express-fileupload');
  3. var nodemailer = require('nodemailer');
  4. var exec = require('ssh-exec');
  5. var Client = require('ssh2').Client;
  6. var connSettings = {
  7. host: 'paget.univ-littoral.fr',
  8. port: 22,
  9. username: 'etu',
  10. password: 'Password'
  11. };
  12. var transporter = nodemailer.createTransport({
  13. service: 'gmail',
  14. auth: {
  15. user: 'ptech011@gmail.com',
  16. pass: 'eilco700'
  17. }
  18. });
  19. var router = express.Router();
  20. // Get Homepage
  21. router.get('/', function(req, res){
  22. res.render('index');
  23. });
  24. function ensureAuthenticated(req, res, next) {
  25. if(req.isAuthenticated()) {
  26. return next();
  27. } else {
  28. res.redirect('/users/login');
  29. }
  30. }
  31. router.get('/compute', ensureAuthenticated, function(req, res){
  32. res.render('compute');
  33. });
  34. router.post('/test', function(req,res) {
  35. console.log(req.body);
  36. if (Object.keys(req.files).length == 0) {
  37. return res.status(400).send('No files were uploaded.');
  38. }
  39. var com = req.body.nIt + " " + req.body.meth + " " + (req.body.ginit ? "1": "0") + " ";
  40. com += (req.body.modph ? "1": "0") + " " + req.body.alpha + " " + req.body.beta;
  41. console.log(com);
  42. //var com = req.body.nIt + req.body
  43. // The name of the input field (i.e. "sampleFile") is used to retrieve the uploaded file
  44. //var sampleFile = req.files.foo;
  45. //console.log(sampleFile.name);
  46. //res.redirect('/compute');
  47. });
  48. router.get('/test', function (res, res) {
  49. res.render('test');
  50. /*
  51. var conn = new Client();
  52. conn.on('ready', function() {
  53. conn.sftp(function(err, sftp) {
  54. if (err) throw err;
  55. var moveFrom = "/home/etu/Documents/DataTest/Data_syntetic_Ecume_all_Xb_200_234_Gi_New_Bounds.xlsx";
  56. var moveTo = "C:\\Users\\Mehdi\\Documents\\P_Tech\\Login-Register\\uploaded\\Data_syntetic_Ecume_all_Xb_200_234_Gi_New_Bounds.xlsx";
  57. sftp.fastGet(moveFrom, moveTo , {}, function(downloadError){
  58. if(downloadError) throw downloadError;
  59. });
  60. });
  61. }).connect(connSettings);
  62. */
  63. });
  64. router.post('/compute', function(req, res) {
  65. if (Object.keys(req.files).length == 0) {
  66. return res.status(400).send('No files were uploaded.');
  67. }
  68. var com = " " + req.body.nIt + " " + req.body.meth + " " + (req.body.ginit ? "1": "0") + " ";
  69. com += (req.body.modph ? "1": "0") + " " + req.body.alpha + " " + req.body.beta + " ";
  70. console.log(com);
  71. // The name of the input field (i.e. "sampleFile") is used to retrieve the uploaded file
  72. var sampleFile = req.files.foo;
  73. sampleFile.name = sampleFile.name.replace(' ', '_');
  74. console.log(sampleFile.name);
  75. if(req.user)
  76. console.log(req.user);
  77. else console.log('no user');
  78. //console.log(req.user.email ? req.user.email : "no Email of user");
  79. //console.log(sampleFile);
  80. // Use the mv() method to place the file somewhere on your server
  81. sampleFile.mv('C:\\Users\\Mehdi\\Documents\\P_Tech\\Login-Register\\uploaded\\' + sampleFile.name, function(err) {
  82. if (err) return res.status(500).send(err);
  83. console.log("File moved");
  84. var conn = new Client();
  85. conn.on('ready', function() {
  86. conn.sftp(function(err, sftp) {
  87. if (err) throw err;
  88. var fs = require("fs"); // Use node filesystem
  89. var readStream = fs.createReadStream( "C:\\Users\\Mehdi\\Documents\\P_Tech\\Login-Register\\uploaded\\" + sampleFile.name );
  90. var writeStream = sftp.createWriteStream( "/home/etu/Documents/DataTest/" + sampleFile.name );
  91. writeStream.on('close',function () {
  92. console.log( "File transferred succesfully" );
  93. res.send('Un email vous sera envoyé contenats vos calculs, dès qu\'ils seront prêt.');
  94. exec('/home/etu/software/NMFbin/NMFIHM /home/etu/Documents/DataTest/'+sampleFile.name + com +'/home/etu/Documents/DataTest/Res_'+sampleFile.name, {
  95. user: 'etu',
  96. host: 'paget.univ-littoral.fr',
  97. password: 'Password'
  98. }, function (err, stdout, stderr) {
  99. if(err) throw err;
  100. console.log(stdout);
  101. console.log(stderr);
  102. var conn = new Client();
  103. conn.on('ready', function() {
  104. conn.sftp(function(err, sftp) {
  105. if (err) throw err;
  106. var moveFrom = "/home/etu/Documents/DataTest/Res_"+sampleFile.name;
  107. var moveTo = "C:\\Users\\Mehdi\\Documents\\P_Tech\\Login-Register\\uploaded\\Res_"+sampleFile.name;
  108. sftp.fastGet(moveFrom, moveTo , {}, function(downloadError){
  109. if(downloadError) throw downloadError;
  110. console.log("Succesfully uploaded");
  111. var mailOptions = {
  112. from: 'ptech011@gmail.com',
  113. to: req.user.email ? req.user.email : 'touimi.benj@gmail.com',
  114. subject: 'Résultat calcul SPAMAP',
  115. text: 'Bonjour,\nVeuillez trouver ci-joint les fichiers obtenus après calucl.\nCordialement.',
  116. attachments: [{
  117. filename:'Res_'+sampleFile.name,
  118. path: "C:\\Users\\Mehdi\\Documents\\P_Tech\\Login-Register\\uploaded\\Res_"+sampleFile.name
  119. }]
  120. };
  121. transporter.sendMail(mailOptions, function(error, info){
  122. if (error) {
  123. console.log(error);
  124. } else {
  125. console.log('Email sent: ' + info.response);
  126. }
  127. });
  128. });
  129. });
  130. }).connect(connSettings);
  131. })
  132. });
  133. writeStream.on('end', function () {
  134. console.log( "sftp connection closed" );
  135. conn.close();
  136. });
  137. // initiate transfer of file
  138. readStream.pipe( writeStream );
  139. });
  140. }).connect(connSettings);
  141. });
  142. });
  143. module.exports = router;