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');
6 var dbRoutes = require('./dbRoutes');
7 var csp = require('./csp');
8 var multer = require('multer');
9 var cookieParser = require('cookie-parser');
10 var csrf = require('csurf');
11 var bodyParser = require('body-parser');
12 //var sax = require('sax'),strict=true,parser = sax.parser(strict);
13 var async = require('async');
16 // SVC_LOGIC table columns
17 var _module=''; // cannot use module its a reserved word
24 // used for file upload button, retain original file name
25 //router.use(bodyParser());
26 var csrfProtection = csrf({cookie: true});
27 router.use(bodyParser.urlencoded({ extended: true }));
28 //var upload = multer({ dest: process.cwd() + '/uploads/', rename: function(fieldname,filename){ return filename; } });
31 var storage = multer.diskStorage({
32 destination: function (req, file, cb) {
33 cb(null, process.cwd() + '/uploads/')
35 filename: function (req, file, cb) {
36 cb(null, file.originalname )
47 dest: process.cwd() + '/uploads/',
48 rename: function(fieldname,filename){
55 //router.use(express.json());
56 //router.use(express.urlencoded());
57 //router.use(multer({ dest: './uploads/' }));
61 router.get('/listSLA', csp.checkAuth, csrfProtection, function(req,res) {
62 dbRoutes.listSLA(req,res,{code:'', msg:''} );
65 router.get('/activate', csp.checkAuth, csrfProtection, function(req,res){
67 var _module = req.query.module;
68 var rpc = req.query.rpc;
69 var version = req.query.version;
70 var mode = req.query.mode;
73 tasks.push( function(callback) { dbRoutes.global_deactivate(req,res,_module,rpc,mode,callback); } );
74 tasks.push( function(callback) { dbRoutes.activate(req,res,_module,rpc,version,mode,callback); } );
75 async.series(tasks, function(err,result){
78 dbRoutes.listSLA(req,res,{code:'failure', msg:'Failed to activate, '+ String(err) });
81 dbRoutes.listSLA(req,res,{ code:'success', msg:'Successfully activated directed graph.'});
86 router.get('/deactivate', csp.checkAuth, csrfProtection, function(req,res){
88 var _module = req.query.module;
89 var rpc = req.query.rpc;
90 var version = req.query.version;
91 var mode = req.query.mode;
94 tasks.push( function(callback) { dbRoutes.deactivate(req,res,_module,rpc,version,mode,callback); } );
95 async.series(tasks, function(err,result){
98 dbRoutes.listSLA(req,res,{code:'failure', msg:'There was an error uploading the file. '+ err });
101 dbRoutes.listSLA(req,res,{ code:'success', msg:'Successfully deactivated directed graph.'});
106 router.get('/deleteDG', csp.checkAuth, csrfProtection, function(req,res){
108 var _module = req.query.module;
109 var rpc = req.query.rpc;
110 var version = req.query.version;
111 var mode = req.query.mode;
114 tasks.push( function(callback) { dbRoutes.deleteDG(req,res,_module,rpc,version,mode,callback); } );
115 async.series(tasks, function(err,result){
118 dbRoutes.listSLA(req,res,{ code:'failure', msg:'There was an error uploading the file. '+ err });
121 dbRoutes.listSLA(req,res,{ code:'success', msg:'Successfully deleted directed graph.'});
126 router.post('/dgUpload', upload.single('filename'), csrfProtection, function(req, res, next){
128 if(req.file.originalname){
129 if (req.file.originalname == 0) {
131 dbRoutes.listSLA(req,res,{ code:'danger', msg:'There was an error uploading the file, please try again.'});
133 fs.exists(req.file.path, function(exists) {
138 //dbRoutes.checkSvcLogic(req,res);
140 var file_buf = fs.readFileSync(req.file.path, "utf8");
142 // call Dan's svclogic shell script from here
143 var currentDB = dbRoutes.getCurrentDB();
144 var commandToExec = process.cwd()
145 + "/shell/svclogic.sh load "
146 + req.file.path + " "
147 + process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB;
149 console.log("commandToExec:" + commandToExec);
150 child = exec(commandToExec ,function (error,stdout,stderr){
152 console.error("error:" + error);
153 //res.type('text/html').status(400).send( error);
157 res.status(400).send(stderr);
161 res.status(200).send( new Buffer('Success'));
165 // remove the grave accents, the sax parser does not like them
166 //parser.write(file_buf.replace(/\`/g,'').toString('utf8')).close();
167 //dbRoutes.addDG(_module,version,rpc,mode,file_buf,req,res);
168 //dbRoutes.listSLA(req,res, resultObj);
172 console.error('sax error:'+ex);
173 res.status(400).send(ex);
178 res.status(400).send(new Buffer('Cannot find file.'));
185 res.status(400).send(new Buffer('file does not exist\n'));
192 router.post('/upload', csp.checkAuth, upload.single('filename'), csrfProtection, function(req, res, next){
194 console.log('file:'+ JSON.stringify(req.file));
196 if(req.file.originalname)
198 if (req.file.originalname.size == 0)
200 dbRoutes.listSLA(req,res,
201 { code:'danger', msg:'There was an error uploading the file, please try again.'});
203 fs.exists(req.file.path, function(exists)
210 //dbRoutes.checkSvcLogic(req,res);
212 var currentDB = dbRoutes.getCurrentDB();
213 var file_buf = fs.readFileSync(req.file.path, "utf8");
215 // call svclogic shell script from here
216 var commandToExec = process.cwd() + "/shell/svclogic.sh load "
217 + req.file.path + " "
218 + process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB;
220 console.log("commandToExec:" + commandToExec);
221 child = exec(commandToExec ,function (error,stdout,stderr)
225 console.error("error:" + error);
226 dbRoutes.listSLA(req,res,{code:'failure',msg:error} );
230 console.error("stderr:" + JSON.stringify(stderr,null,2));
231 var s_stderr = JSON.stringify(stderr);
232 if ( s_stderr.indexOf("Saving") > -1 )
234 dbRoutes.listSLA(req,res,{code:'success', msg:'File sucessfully uploaded.'});
236 dbRoutes.listSLA(req,res,{code:'failure', msg:stderr});
241 console.log("stderr:" + stdout);
242 dbRoutes.listSLA(req,res,{code:'success', msg:'File sucessfully uploaded.'});
246 // remove the grave accents, the sax parser does not like them
247 //parser.write(file_buf.replace(/\`/g,'').toString('utf8')).close();
248 //dbRoutes.addDG(_module,version,rpc,mode,file_buf,req,res);
249 //dbRoutes.listSLA(req,res, resultObj);
253 console.error("error:" + ex);
254 dbRoutes.listSLA(req,res,{code:'failure',msg:ex} );
258 dbRoutes.listSLA(req,res,{ code:'danger', msg:'There was an error uploading the file, please try again.'});
263 dbRoutes.listSLA(req,res,{ code:'danger', msg:'There was an error uploading the file, please try again.'});
267 router.get('/printAsXml', csp.checkAuth, csrfProtection, function(req,res){
270 //dbRoutes.checkSvcLogic(req,res);
272 var _module = req.query.module;
273 var rpc = req.query.rpc;
274 var version = req.query.version;
275 var mode = req.query.mode;
276 var currentDB = dbRoutes.getCurrentDB();
278 // call Dan's svclogic shell script from here
279 var commandToExec = process.cwd()
280 + "/shell/svclogic.sh get-source "
285 + process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB;
287 console.log("commandToExec:" + commandToExec);
289 child = exec(commandToExec , {maxBuffer: 1024*5000}, function (error,stdout,stderr){
291 console.error("error:" + error);
292 dbRoutes.listSLA(req,res,{code:'failure',msg:error} );
296 //logger.info("stderr:" + stderr);
299 console.log("OUTPUT:" + stdout);
300 res.render('sla/printasxml', {result:{code:'success',
301 msg:'Module : ' + _module + '\n' +
302 'RPC : ' + rpc + '\n' +
303 'Mode : ' + mode + '\n' +
304 'Version: ' + version + '\n\n' + stdout}, header:process.env.MAIN_MENU});
307 // remove the grave accents, the sax parser does not like them
308 //parser.write(file_buf.replace(/\`/g,'').toString('utf8')).close();
309 //dbRoutes.addDG(_module,version,rpc,mode,file_buf,req,res);
310 //dbRoutes.listSLA(req,res, resultObj);
313 console.error("error:" + ex);
314 dbRoutes.listSLA(req,res,{code:'failure',msg:ex} );
319 module.exports = router;