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 bodyParser = require('body-parser');
10 //var sax = require('sax'),strict=true,parser = sax.parser(strict);
11 var async = require('async');
14 // SVC_LOGIC table columns
15 var _module=''; // cannot use module its a reserved word
22 // used for file upload button, retain original file name
23 //router.use(bodyParser());
24 router.use(bodyParser.urlencoded({
27 //var upload = multer({ dest: process.cwd() + '/uploads/', rename: function(fieldname,filename){ return filename; } });
30 var storage = multer.diskStorage({
31 destination: function (req, file, cb) {
32 cb(null, process.cwd() + '/uploads/')
34 filename: function (req, file, cb) {
35 cb(null, file.originalname )
46 dest: process.cwd() + '/uploads/',
47 rename: function(fieldname,filename){
54 //router.use(express.json());
55 //router.use(express.urlencoded());
56 //router.use(multer({ dest: './uploads/' }));
60 router.get('/listSLA', csp.checkAuth, function(req,res) {
61 dbRoutes.listSLA(req,res,{code:'', msg:''} );
64 router.get('/activate', csp.checkAuth, function(req,res){
66 var _module = req.query.module;
67 var rpc = req.query.rpc;
68 var version = req.query.version;
69 var mode = req.query.mode;
72 tasks.push( function(callback) { dbRoutes.global_deactivate(req,res,_module,rpc,mode,callback); } );
73 tasks.push( function(callback) { dbRoutes.activate(req,res,_module,rpc,version,mode,callback); } );
74 async.series(tasks, function(err,result){
77 dbRoutes.listSLA(req,res,{code:'failure', msg:'Failed to activate, '+ String(err) });
80 dbRoutes.listSLA(req,res,{ code:'success', msg:'Successfully activated directed graph.'});
85 router.get('/deactivate', csp.checkAuth, function(req,res){
87 var _module = req.query.module;
88 var rpc = req.query.rpc;
89 var version = req.query.version;
90 var mode = req.query.mode;
93 tasks.push( function(callback) { dbRoutes.deactivate(req,res,_module,rpc,version,mode,callback); } );
94 async.series(tasks, function(err,result){
97 dbRoutes.listSLA(req,res,{code:'failure', msg:'There was an error uploading the file. '+ err });
100 dbRoutes.listSLA(req,res,{ code:'success', msg:'Successfully deactivated directed graph.'});
105 router.get('/deleteDG', csp.checkAuth, function(req,res){
107 var _module = req.query.module;
108 var rpc = req.query.rpc;
109 var version = req.query.version;
110 var mode = req.query.mode;
113 tasks.push( function(callback) { dbRoutes.deleteDG(req,res,_module,rpc,version,mode,callback); } );
114 async.series(tasks, function(err,result){
117 dbRoutes.listSLA(req,res,{ code:'failure', msg:'There was an error uploading the file. '+ err });
120 dbRoutes.listSLA(req,res,{ code:'success', msg:'Successfully deleted directed graph.'});
125 router.post('/dgUpload', upload.single('filename'), function(req, res, next){
127 if(req.file.originalname){
128 if (req.file.originalname == 0) {
130 dbRoutes.listSLA(req,res,{ code:'danger', msg:'There was an error uploading the file, please try again.'});
132 fs.exists(req.file.path, function(exists) {
137 //dbRoutes.checkSvcLogic(req,res);
139 var file_buf = fs.readFileSync(req.file.path, "utf8");
141 // call Dan's svclogic shell script from here
142 var currentDB = dbRoutes.getCurrentDB();
143 var commandToExec = process.cwd()
144 + "/shell/svclogic.sh load "
145 + req.file.path + " "
146 + process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB;
148 console.log("commandToExec:" + commandToExec);
149 child = exec(commandToExec ,function (error,stdout,stderr){
151 console.error("error:" + error);
152 //res.type('text/html').status(400).send( error);
156 res.status(400).send(stderr);
160 res.status(200).send( new Buffer('Success'));
164 // remove the grave accents, the sax parser does not like them
165 //parser.write(file_buf.replace(/\`/g,'').toString('utf8')).close();
166 //dbRoutes.addDG(_module,version,rpc,mode,file_buf,req,res);
167 //dbRoutes.listSLA(req,res, resultObj);
171 console.error('sax error:'+ex);
172 res.status(400).send(ex);
177 res.status(400).send(new Buffer('Cannot find file.'));
184 res.status(400).send(new Buffer('file does not exist\n'));
191 router.post('/upload', csp.checkAuth, upload.single('filename'), function(req, res, next){
193 console.log('file:'+ JSON.stringify(req.file));
195 if(req.file.originalname){
196 if (req.file.originalname.size == 0) {
197 dbRoutes.listSLA(req,res,{ code:'danger', msg:'There was an error uploading the file, please try again.'});
199 fs.exists(req.file.path, function(exists) {
204 //dbRoutes.checkSvcLogic(req,res);
206 var currentDB = dbRoutes.getCurrentDB();
207 var file_buf = fs.readFileSync(req.file.path, "utf8");
209 // call Dan's svclogic shell script from here
210 var commandToExec = process.cwd()
211 + "/shell/svclogic.sh load "
212 + req.file.path + " "
213 + process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB;
215 console.log("commandToExec:" + commandToExec);
216 child = exec(commandToExec ,function (error,stdout,stderr){
218 console.error("error:" + error);
219 dbRoutes.listSLA(req,res,{code:'failure',msg:error} );
223 console.error("stderr:" + JSON.stringify(stderr,null,2));
224 var s_stderr = JSON.stringify(stderr);
225 if ( s_stderr.indexOf("Saving") > -1 )
227 dbRoutes.listSLA(req,res,{code:'success', msg:'File sucessfully uploaded.'});
229 dbRoutes.listSLA(req,res,{code:'failure', msg:stderr});
234 console.log("stderr:" + stdout);
235 dbRoutes.listSLA(req,res,{code:'success', msg:'File sucessfully uploaded.'});
239 // remove the grave accents, the sax parser does not like them
240 //parser.write(file_buf.replace(/\`/g,'').toString('utf8')).close();
241 //dbRoutes.addDG(_module,version,rpc,mode,file_buf,req,res);
242 //dbRoutes.listSLA(req,res, resultObj);
246 console.error("error:" + ex);
247 dbRoutes.listSLA(req,res,{code:'failure',msg:ex} );
251 dbRoutes.listSLA(req,res,{ code:'danger', msg:'There was an error uploading the file, please try again.'});
256 dbRoutes.listSLA(req,res,{ code:'danger', msg:'There was an error uploading the file, please try again.'});
260 router.get('/printAsXml', csp.checkAuth, function(req,res){
263 //dbRoutes.checkSvcLogic(req,res);
265 var _module = req.query.module;
266 var rpc = req.query.rpc;
267 var version = req.query.version;
268 var mode = req.query.mode;
269 var currentDB = dbRoutes.getCurrentDB();
271 // call Dan's svclogic shell script from here
272 var commandToExec = process.cwd()
273 + "/shell/svclogic.sh get-source "
278 + process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB;
280 console.log("commandToExec:" + commandToExec);
282 child = exec(commandToExec , {maxBuffer: 1024*5000}, function (error,stdout,stderr){
284 console.error("error:" + error);
285 dbRoutes.listSLA(req,res,{code:'failure',msg:error} );
289 //logger.info("stderr:" + stderr);
292 console.log("OUTPUT:" + stdout);
293 res.render('sla/printasxml', {result:{code:'success',
294 msg:'Module : ' + _module + '\n' +
295 'RPC : ' + rpc + '\n' +
296 'Mode : ' + mode + '\n' +
297 'Version: ' + version + '\n\n' + stdout}, header:process.env.MAIN_MENU});
300 // remove the grave accents, the sax parser does not like them
301 //parser.write(file_buf.replace(/\`/g,'').toString('utf8')).close();
302 //dbRoutes.addDG(_module,version,rpc,mode,file_buf,req,res);
303 //dbRoutes.listSLA(req,res, resultObj);
306 console.error("error:" + ex);
307 dbRoutes.listSLA(req,res,{code:'failure',msg:ex} );
312 router.get('/printAsGv', csp.checkAuth, function(req,res){
315 //dbRoutes.checkSvcLogic(req,res);
317 var _module = req.query.module;
318 var rpc = req.query.rpc;
319 var version = req.query.version;
320 var mode = req.query.mode;
321 var currentDB = dbRoutes.getCurrentDB();
322 console.log('currentDB='+currentDB);
324 // call Dan's svclogic shell script from here
325 var commandToExec = process.cwd()
326 + "/shell/svclogic.sh print "
331 + process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB
334 console.log("commandToExec:" + commandToExec);
336 child = exec(commandToExec ,
337 {encoding:'base64',maxBuffer:5000*1024}, function (error,stdout,stderr){
339 console.error("error:" + error);
340 dbRoutes.listSLA(req,res,{code:'failure',msg:error} );
344 console.error("stderr:" + stderr);
347 //logger.info("OUTPUT:" + stdout);
348 //res.render('sla/printasgv', result = {code:'success',
349 //msg:new Buffer(stdout,'base64')} );
350 res.render('sla/printasgv', {result:{code:'success',
355 msg:stdout}, header:process.env.MAIN_MENU});
358 // remove the grave accents, the sax parser does not like them
359 //parser.write(file_buf.replace(/\`/g,'').toString('utf8')).close();
360 //dbRoutes.addDG(_module,version,rpc,mode,file_buf,req,res);
361 //dbRoutes.listSLA(req,res, resultObj);
364 console.error("error:" + ex);
365 dbRoutes.listSLA(req,res,{code:'failure',msg:ex} );
369 module.exports = router;