Added new modules to help prevent Cross Site Request Forgery
[sdnc/oam.git] / admportal / server / router / routes / preload.js
1 var express = require('express');
2 var router = express.Router();
3 var exec = require('child_process').exec;
4 var util = require('util');
5 var fs = require('fs.extra');
6 var dbRoutes = require('./dbRoutes');
7 var csp = require('./csp');
8 var multer = require('multer');
9 var bodyParser = require('body-parser');
10 var sax = require('sax'),strict=true,parser = sax.parser(strict);
11 var async = require('async');
12 var l_ = require('lodash');
13 var dateFormat = require('dateformat');
14 var properties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json');
15 var vnf = require('./vnf');
16 var network = require('./network');
17 var moment = require('moment');
18
19 // pass host, username and password to ODL
20 // target host for ODL request
21 var username = properties.odlUser;
22 var password = properties.odlPasswd;
23 var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64');
24 var host = properties.odlHost;
25 var port = properties.odlPort;
26
27 var header = {'Host': host, 'Authorization': auth, 'Content-Type': 'application/json'};
28 var options = {
29         host    : host,
30         headers : header,
31         port    : port,
32         rejectUnauthorized:false,
33         strictSSL: false
34 };
35
36 // multer 
37 var unixTime = moment().unix();
38 var storage = multer.diskStorage({
39   destination: function (req, file, cb) {
40     cb(null, process.cwd() + '/uploads/')
41                 return;
42   },
43   filename: function (req, file, cb) {
44 console.log('filename');
45     cb(null, unixTime + "." + file.originalname )
46                 return;
47   }
48 });
49
50 var upload = multer({
51         storage: storage,
52         fileFilter: function(req,file,cb) {
53                 var type = file.mimetype;
54                 if ( type.indexOf('ms-excel') == -1 ) {
55                         return cb(null,false);
56                 }
57                 cb(null,true);
58                 return;
59         }
60 });
61
62 router.post('/uploadVnfCsv', csp.checkAuth, upload.array('filename'), function(req, res)
63 {
64   var msgArray = new Array();
65         var privilegeObj = req.session.loggedInAdmin;
66         var tasks = [];
67
68         tasks.push ( function(callback) { vnf.go(req,res,callback,''); } );
69         tasks.push ( function(arg1,arg2,callback) { formatVnfInsertStatement(arg1,arg2,req,res,callback); } );
70   tasks.push( function(arg1, callback) { dbRoutes.addRow(arg1,req,res,callback); } );
71         async.waterfall(tasks, function(err,result)
72         {       
73                 if(err){
74                         msgArray.push(err);
75                         dbRoutes.getVnfData(req,res,{code:'failure', msg:msgArray},privilegeObj);
76                         return;
77                 }
78                 else {
79                         msgArray.push('Successfully uploaded file.' );
80                         dbRoutes.getVnfData(req,res,{code:'success', msg:msgArray},privilegeObj);
81                         return;
82                 }
83         });
84 });
85
86 router.post('/uploadNetworkCsv', csp.checkAuth, upload.array('filename'), function(req, res)
87 {
88         console.log('uploadNetworkCsv');
89
90         var msgArray = new Array();
91         var privilegeObj = req.session.loggedInAdmin;
92         var tasks = [];
93
94         tasks.push ( function(callback) { network.go(req,res,callback,''); } );
95         tasks.push ( function(arg1,arg2,callback) { formatNetworkInsertStatement(arg1,arg2,req,res,callback); } );
96         tasks.push( function(arg1, callback) { dbRoutes.addRow(arg1,req,res,callback); } );
97         async.waterfall(tasks, function(err,result)
98         {
99                 if(err){
100                         console.log('ERROR:' + err);
101                         msgArray.push(err);
102                         dbRoutes.getVnfNetworkData(req,res,{code:'failure', msg:msgArray},privilegeObj);
103                 }
104                 else {
105                         msgArray.push('Successfully uploaded file.' );
106                         dbRoutes.getVnfNetworkData(req,res,{code:'success', msg:msgArray},privilegeObj);
107                 }
108         });
109 });
110
111
112 function formatVnfInsertStatement(content,filename,req,res,callback)
113 {
114         var newstr = JSON.stringify(content);
115         var enc_str = encodeURI(newstr);
116         var sql = "INSERT INTO PRE_LOAD_VNF_DATA "
117                 + "(filename,preload_data) VALUES ("
118                 + "'"+ filename + "',"
119                 + "'" + enc_str + "')";
120
121         callback(null,sql);
122         return;
123 }
124
125 function formatNetworkInsertStatement(content,filename,req,res,callback)
126 {
127         var newstr = JSON.stringify(content);
128         var enc_str = encodeURI(newstr);
129         var sql = "INSERT INTO PRE_LOAD_VNF_NETWORK_DATA "
130                 + "(filename,preload_data) VALUES ("
131                 + "'"+ filename + "',"
132                 + "'" + enc_str + "')";
133
134         callback(null,sql);
135         return;
136 }
137
138 module.exports = router;