1 var express = require('express');
2 var router = express.Router();
4 var spawn = require('child_process').spawn;
6 //var util = require('util');
7 var fs = require('fs');
8 var dbRoutes = require('./dbRoutes');
9 var csp = require('./csp');
10 var multer = require('multer');
11 var cookieParser = require('cookie-parser');
12 var csrf = require('csurf');
13 var bodyParser = require('body-parser');
14 //var sax = require('sax'),strict=true,parser = sax.parser(strict);
15 var async = require('async');
18 // SVC_LOGIC table columns
19 var _module=''; // cannot use module its a reserved word
26 // used for file upload button, retain original file name
27 //router.use(bodyParser());
28 var csrfProtection = csrf({cookie: true});
29 router.use(bodyParser.urlencoded({ extended: true }));
30 //var upload = multer({ dest: process.cwd() + '/uploads/', rename: function(fieldname,filename){ return filename; } });
33 var storage = multer.diskStorage({
34 destination: function (req, file, cb) {
35 cb(null, process.cwd() + '/uploads/')
37 filename: function (req, file, cb) {
38 cb(null, file.originalname )
49 dest: process.cwd() + '/uploads/',
50 rename: function(fieldname,filename){
57 //router.use(express.json());
58 //router.use(express.urlencoded());
59 //router.use(multer({ dest: './uploads/' }));
63 router.get('/listSLA', csp.checkAuth, csrfProtection, function(req,res) {
64 dbRoutes.listSLA(req,res,{code:'', msg:''} );
67 router.get('/activate', csp.checkAuth, csrfProtection, function(req,res){
69 var _module = req.sanitize(req.query.module);
70 var rpc = req.sanitize(req.query.rpc);
71 var version = req.sanitize(req.query.version);
72 var mode = req.sanitize(req.query.mode);
75 tasks.push( function(callback) { dbRoutes.global_deactivate(req,res,_module,rpc,mode,callback); } );
76 tasks.push( function(callback) { dbRoutes.activate(req,res,_module,rpc,version,mode,callback); } );
77 async.series(tasks, function(err,result){
80 dbRoutes.listSLA(req,res,{code:'failure', msg:err });
83 dbRoutes.listSLA(req,res,{ code:'success', msg:'Successfully activated directed graph.'});
88 router.get('/deactivate', csp.checkAuth, csrfProtection, function(req,res){
90 var _module = req.sanitize(req.query.module);
91 var rpc = req.sanitize(req.query.rpc);
92 var version = req.sanitize(req.query.version);
93 var mode = req.sanitize(req.query.mode);
96 tasks.push( function(callback) { dbRoutes.deactivate(req,res,_module,rpc,version,mode,callback); } );
97 async.series(tasks, function(err,result){
100 dbRoutes.listSLA(req,res,{code:'failure', msg:err });
103 dbRoutes.listSLA(req,res,{code:'success', msg:'Successfully deactivated directed graph.'});
108 router.get('/deleteDG', csp.checkAuth, csrfProtection, function(req,res){
110 var _module = req.sanitize(req.query.module);
111 var rpc = req.sanitize(req.query.rpc);
112 var version = req.sanitize(req.query.version);
113 var mode = req.sanitize(req.query.mode);
116 tasks.push( function(callback) { dbRoutes.deleteDG(req,res,_module,rpc,version,mode,callback); } );
117 async.series(tasks, function(err,result){
120 dbRoutes.listSLA(req,res,{code:'failure', msg:'There was an deleting the directed graph. '+ err });
123 dbRoutes.listSLA(req,res,{code:'success', msg:'Successfully deleted directed graph.'});
129 router.post('/upload', csp.checkAuth, upload.single('filename'), csrfProtection, function(req, res, next){
133 console.log('file:'+ JSON.stringify(req.file));
135 if(req.file.originalname)
137 if (req.file.originalname.size == 0)
139 dbRoutes.listSLA(req,res, {code:'danger', msg:'There was an error uploading the file, please try again.'});
141 fs.exists(req.file.path, function(exists)
148 var currentDB = dbRoutes.getCurrentDB();
149 var file_buf = fs.readFileSync(req.file.path, "utf8");
151 // call svclogic shell script from here
152 var commandToExec = process.cwd() + "/shell/svclogic.sh";
154 console.log('filepath: ' + req.file.path);
155 console.log('prop: ' + process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB);
156 console.log("commandToExec:" + commandToExec);
158 child = spawn(commandToExec, ['load', req.file.path, process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB]);
159 child.on('error', function(error){
160 console.log('error: '+error);
161 dbRoutes.listSLA(req,res,{code:'failure', msg:error});
164 child.stdout.on('data', function(data) {
165 console.log('stdout: ' + data);
166 _lstdout = _lstdout.concat(data);
168 child.stderr.on('data', function(data) {
169 console.log("stderr:" + data);
170 _lstderr = _lstderr.concat(data);
172 child.on('exit', function(code,signal){
173 console.log('code: ' + code);
174 console.log('stdout: [[' + _lstdout + ']]');
175 console.log('stderr: [[' + _lstderr + ']]');
176 if ( _lstderr.indexOf("Saving") > -1 )
178 dbRoutes.listSLA(req,res,{code:'success', msg:'File sucessfully uploaded.'});
182 dbRoutes.listSLA(req,res,{code:'failure', msg:_lstderr} );
187 console.log("error: " + ex);
188 dbRoutes.listSLA(req,res,{code:'failure',msg:ex} );
193 dbRoutes.listSLA(req,res,{code:'danger', msg:'There was an error uploading the file, please try again.'});
199 dbRoutes.listSLA(req,res,{code:'danger', msg:'There was an error uploading the file, please try again.'});
204 router.get('/printAsXml', csp.checkAuth, csrfProtection, function(req,res){
209 var _module = req.query.module;
210 var rpc = req.query.rpc;
211 var version = req.query.version;
212 var mode = req.query.mode;
213 var currentDB = dbRoutes.getCurrentDB();
215 // call Dan's svclogic shell script from here
216 var commandToExec = process.cwd() + "/shell/svclogic.sh";
217 console.log("commandToExec:" + commandToExec);
218 console.log("_mode: " + _module);
219 console.log("rpc: " + rpc);
220 console.log("version: " + version);
221 console.log("currentDB: " + process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB);
223 child = spawn(commandToExec, ['get-source', _module, rpc, mode, version, process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB], {maxBuffer: 1024*5000});
224 child.on('error', function(error){
225 console.log("error: " + error);
226 dbRoutes.listSLA(req,res,{code:'failure',msg:error} );
229 child.stderr.on('data', function(data){
230 console.log('stderr: ' + data);
231 _lstderr = _lstderr.concat(data);
233 child.stdout.on('data', function(data){
234 console.log("OUTPUT:" + data);
235 _lstdout = _lstdout.concat(data);
237 child.on('exit', function(code,signal){
239 console.log('code: ' + code);
240 console.log('close:stdout: ' + _lstdout);
241 console.log('close:stderr: ' + _lstderr);
244 dbRoutes.listSLA(req,res,{code:'failure',msg:_lstderr} );
247 res.render('sla/printasxml', {result:{code:'success',
248 msg:'Module : ' + _module + '\n' +
249 'RPC : ' + rpc + '\n' +
250 'Mode : ' + mode + '\n' +
251 'Version: ' + version + '\n\n' + _lstdout}, header:process.env.MAIN_MENU});
256 console.error("error:" + ex);
257 dbRoutes.listSLA(req,res,{code:'failure',msg:ex} );
262 module.exports = router;