1 var express = require('express'),
3 var mysql = require('mysql');
4 var properties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json');
5 var fs = require('fs.extra');
6 var util = require('util');
7 var os = require('os');
8 var async = require('async');
9 var l_ = require('lodash');
10 var dns = require('dns');
11 var dnsSync = require('dns-sync');
15 var currentDbName = '';
16 var fabricDB = properties.dbFabricServer;
17 var dbArray = properties.databases;
18 var enckey = properties.passwordKey;
20 console.log('dbFabric=' + properties.dbFabric);
22 if ( properties.dbFabric == 'true' )
32 exports.dbConnect = function(){
34 console.log('fabric=' + fabricDB);
35 if ( properties.dbFabric == 'true' )
45 function setCurrentDbName(){
47 function createFunction(dbentry)
49 return function(callback) { findCurrentDbIP(dbentry,callback); }
53 for (var x=0; x<dbArray.length; x++){
54 var dbElement = dbArray[x];
55 var dbElementArray = dbElement.split("|");
57 tasks.push( createFunction(dbElement) );
59 async.series(tasks, function(err,result){
63 console.log('currentDbName: ' + err);
67 console.log('not found');
74 function findCurrentDbIP(dbElement, callback){
76 var dbElementArray = dbElement.split("|");
78 dns.lookup( dbElementArray[0], function onLookup(err, addresses, family) {
80 if ( currentDB == addresses ){
81 callback(dbElementArray[1]);
92 exports.getCurrentDB = function(){
97 exports.testdb = function(req,res,callback){
98 console.log('testdb');
101 'hostname' : os.hostname(),
103 'platform' : os.platform(),
105 'release' : os.release(),
106 'uptime' : os.uptime(),
107 'totalmem' : os.totalmem(),
111 pool.getConnection(function(err,connection)
118 // http://stackoverflow.com/questions/10982281/mysql-connection-validity-test-in-datasource-select-1-or-something-better
119 connection.query("/* pint */ SELECT 1", function(err,result){
121 connection.release();
126 callback(null,'Database Connectivity to ' + currentDB + ' is working.');
129 }); // end getConnection
133 exports.checkSvcLogic = function(req,res){
135 if ( DBmasterHost.length > 0 && currentHost != DBmasterHost )
137 // need to copy file so SLA functionality works
138 var source = process.env.SDNC_CONFIG_DIR
139 + "/svclogic.properties." + currentHost;
140 var target = process.env.SDNC_CONFIG_DIR
141 + "/svclogic.properties";
142 fs.copy(source,target,{replace:true}, function(err){
144 res.render("pages/err",
145 {result:{code:'error',
146 msg:"Unable to copy svclogic.properties. "+ String(err) }});
153 function initDB( next ) {
157 for (var x=0; x<properties.databases.length; x++){
159 var db = properties.databases[x];
160 var dbArray = db.split("|");
161 var _dbIP = dnsSync.resolve(dbArray[0]);
162 var _dbName = dbArray[1];
164 tasks.push( createFindMasterFunctionObj(_dbIP, _dbName) );
166 async.series(tasks, function(err,result)
169 if ( err == 'found' ){
170 if ( typeof next != 'undefined'){
178 console.error( String(err) ); // ALARM
182 console.log('result=' + result);
188 function createFindMasterFunctionObj(dbIP,dbName){
189 return function(callback) { findMaster(dbIP, dbName, callback); }
192 function findMaster (ldbIP, ldbName, callback){
194 var dbName = ldbName;
196 console.log('checking dbIP:' + dbIP);
198 pool = mysql.createPool({
199 connectionLimit : properties.dbConnLimit,
201 user : properties.dbUser,
202 password : properties.dbPassword,
203 database : properties.dbName,
204 multipleStatements: true,
208 pool.getConnection(function(err,connection){
211 callback( String(err) );
214 var sql = 'select @@read_only';
215 connection.query(sql, function(err,result){
216 connection.release();
218 // @@read_only=0 means db is writeable
219 console.log('@@read_only=' + result[0]['@@read_only']);
220 if ( result[0]['@@read_only'] == '0' )
222 // if this is not the current DB, make it since its writeable
224 currentDbName = dbName;
225 console.log('currentDB=' + currentDB + "|" + currentDbName);
226 var newpool = mysql.createPool({
227 connectionLimit : properties.dbConnLimit,
229 user : properties.dbUser,
230 password : properties.dbPassword,
231 database : properties.dbName,
232 multipleStatements: true,
236 callback('found', currentDB);
239 // otherwise this is the current db and its writeable, just return
240 callback(null, currentDB);
246 exports.checkDB = function(req,res,next){
248 console.log('checkDB');
251 if ( properties.dbFabric == 'true' )
263 exports.saveUser = function(req,res){
265 pool.getConnection(function(err,connection){
267 console.error( String(err) ); // ALARM
268 res.render("pages/signup", {result:{code:'error', msg:"Unable to get database connection. " + String(err)},header:process.env.MAIN_MENU});
271 //var sql = "SELECT AES_DECRYPT(password, '" + enckey + "') password FROM PORTAL_USERS";
272 var sql = "SELECT email FROM PORTAL_USERS WHERE email='" + req.body.nf_email + "'";
276 connection.query(sql, function(err,result){
278 res.render("pages/signup", {result:{code:'error', msg:"Unable to get database connection. " + String(err)},header:process.env.MAIN_MENU});
281 if (result.length == 1 || result.length > 1)
283 res.render("pages/signup", {result:{code:'error', msg:'User Information already exists.'},header:process.env.MAIN_MENU});
287 sql = "INSERT INTO PORTAL_USERS (email,password,privilege) VALUES ("
288 +"'"+ req.body.nf_email + "',"
289 + "AES_ENCRYPT('" + req.body.nf_password + "','" + enckey + "'),"
294 connection.query(sql, function(err,result){
295 connection.release();
298 res.render("pages/signup", {result:{ code:'error', msg:String(err) },header:process.env.MAIN_MENU});;
301 res.render('pages/signup', {result:{code:'success', msg:'User created. Please login.'},header:process.env.MAIN_MENU});
309 exports.deleteUser = function(req,res){
312 var resultObj = { code:'', msg:'' };
313 var privilegeObj = req.session.loggedInAdmin;
315 pool.getConnection(function(err,connection) {
317 console.error( String(err) ); // ALARM
318 res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. Error:" + String(err),
319 privilege:privilegeObj },header:process.env.MAIN_MENU});
323 var sqlUpdate = "DELETE FROM PORTAL_USERS WHERE email='" + req.query.email + "'";
325 console.log(sqlUpdate);
327 connection.query(sqlUpdate,function(err,result){
330 resultObj = {code:'error', msg:'Delete of user failed Error: '+ String(err) };
333 // Need DB lookup logic here
334 connection.query("SELECT email,password,privilege FROM PORTAL_USERS", function(err, rows) {
335 connection.release();
337 if ( rows.length > 0 )
339 resultObj = {code:'success',msg:'Successfully deleted user.'};
340 res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
343 res.render("user/list", { rows: null, result:{code:'error', msg:'Unexpected no rows returned from database, please try again.',
344 privilege:privilegeObj },header:process.env.MAIN_MENU});
348 res.render("user/list", { rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. Error: ' + String(err),
349 privilege:privilegeObj },header:process.env.MAIN_MENU});
354 }); // end of getConnection
358 exports.addUser = function(req,res){
361 var resultObj = { code:'', msg:'' };
362 var privilegeObj = req.session.loggedInAdmin;
364 pool.getConnection(function(err,connection) {
366 console.error( String(err) ); // ALARM
367 res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. "+ String(err),
368 privilege:privilegeObj },header:process.env.MAIN_MENU});
372 if( req.body.nf_privilege == "admin" ){
374 }else if(req.body.nf_privilege == 'readonly'){
381 //connection.query(sqlRequest, function(err,result){
382 var sqlUpdate = "INSERT INTO PORTAL_USERS (email, password, privilege) VALUES ("
383 +"'"+ req.body.nf_email + "',"
384 + "AES_ENCRYPT('" + req.body.nf_password + "','" + enckey + "'),"
385 +"'"+ char_priv + "')";
387 console.log(sqlUpdate);
389 connection.query(sqlUpdate,function(err,result){
392 resultObj = {code:'error', msg:'Add of user failed Error: '+err};
395 // Need DB lookup logic here
396 connection.query("SELECT email,AES_DECRYPT(password, '" + enckey + "') password,privilege FROM PORTAL_USERS", function(err, rows) {
398 connection.release();
400 if ( rows.length > 0 )
402 resultObj = {code:'success',msg:'Successfully added user.'};
403 res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
406 res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database, please try again.',
407 privilege:privilegeObj },header:process.env.MAIN_MENU});
411 res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. Error: '+ err ,
412 privilege:privilegeObj },header:process.env.MAIN_MENU});
418 }); // end of getConnection
422 exports.updateUser= function(req,res){
425 var resultObj = { code:'', msg:'' };
426 var privilegeObj = req.session.loggedInAdmin;
428 pool.getConnection(function(err,connection) {
431 console.error( String(err) ); // ALARM
432 res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. " + String(err),
433 privilege:privilegeObj },header:process.env.MAIN_MENU});
437 if( req.body.uf_privilege == "admin" ){
439 }else if(req.body.uf_privilege == 'readonly'){
446 //connection.query(sqlRequest, function(err,result){
447 var sqlUpdate = "UPDATE PORTAL_USERS SET "
448 + "email = '" + req.body.uf_email + "',"
449 + "password = " + "AES_ENCRYPT('" + req.body.uf_password + "','" + enckey + "'), "
450 + "privilege = '"+ char_priv + "'"
451 + " WHERE email = '" + req.body.uf_key_email + "'";
453 console.log(sqlUpdate);
455 connection.query(sqlUpdate,function(err,result){
458 resultObj = {code:'error', msg:'Update of user failed Error: '+err};
461 // Need DB lookup logic here
462 connection.query("SELECT email, AES_DECRYPT(password,'" + enckey + "') password, privilege FROM PORTAL_USERS", function(err, rows) {
463 connection.release();
465 if ( rows.length > 0 )
467 resultObj = {code:'success',msg:'Successfully updated user.'};
468 res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU} );
471 res.render("user/list", {rows: null, result:{ code:'error', msg:'Unexpected no rows returned from database.',
472 privilege:privilegeObj },header:process.env.MAIN_MENU});
476 res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. ' + String(err),
477 privilege:privilegeObj },header:process.env.MAIN_MENU});
482 }); // end of getConnection
485 exports.listUsers = function(req,res,resultObj){
487 var privilegeObj = req.session.loggedInAdmin;
489 pool.getConnection(function(err,connection) {
492 console.error( String(err) ); // ALARM
493 res.render("pages/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. " + String(err),
494 privilege:privilegeObj },header:process.env.MAIN_MENU});
498 // Need DB lookup logic here
499 var selectUsers = "SELECT email, AES_DECRYPT(password,'" + enckey + "') password, privilege from PORTAL_USERS";
500 console.log(selectUsers);
501 connection.query(selectUsers, function(err, rows) {
503 connection.release();
505 resultObj = {code:'error', msg:'Unable to SELECT users Error: '+err};
509 if ( rows.length > 0 )
511 console.log(JSON.stringify(rows));
512 res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU });
516 res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database.',
517 privilege:privilegeObj },header:process.env.MAIN_MENU});
521 res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. ' + String(err),
522 privilege:privilegeObj },header:process.env.MAIN_MENU});
526 }); // end getConnection
529 exports.listSLA = function(req,res,resultObj){
531 var privilegeObj = req.session.loggedInAdmin;
533 pool.getConnection(function(err,connection) {
536 console.error( String(err) ); // ALARM
537 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
541 // Need DB lookup logic here
542 connection.query("SELECT module,rpc,version,mode,active,graph FROM SVC_LOGIC", function(err, rows) {
544 connection.release();
546 res.render("pages/err", {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
550 res.render("sla/list", {rows:rows, result:resultObj, privilege:privilegeObj, header:process.env.MAIN_MENU} );
554 }); // end getConnection
557 exports.executeSQL = function(sql,req,res,callback){
561 pool.getConnection(function(err,connection) {
564 console.error( String(err) ); // ALARM
565 callback(err, 'Unable to get database connection.' + err);
569 connection.query(sql, function(err,result){
570 connection.release();
572 callback(err,'Database operation failed. ' + err );
576 console.log('affectedRows='+result.affectedRows);
577 callback(null, result.affectedRows);
580 }); // end getConnection
584 // gamma - deleteParameter
585 exports.deleteParameter = function(req,res,callback){
587 var sql = "DELETE FROM PARAMETERS WHERE name='" + req.query.name + "'";
591 pool.getConnection(function(err,connection) {
594 console.log( String(err) ); // ALARM
595 callback(err, 'Unable to get database connection.' + err);
598 connection.query(sql, function(err,result){
599 connection.release();
601 console.log('Update failed. ' + err );
602 callback(err,'Update failed. ' + err );
609 }); // end getConnection
613 exports.getTable = function(req,res,sql,rdestination,resultObj,privilegeObj){
615 console.log('SQL:'+sql);
617 pool.getConnection(function(err,connection) {
620 console.error( String(err) ); // ALARM
621 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
624 connection.query(sql,function(err, rows)
626 connection.release();
628 res.render(rdestination, {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
632 res.render(rdestination, { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
636 }); // end getConnection
639 exports.getMetaTable = function(req,res,sql,rdestination,resultObj,privilegeObj){
641 console.log('SQL:'+ sql);
645 var vtables = properties.viewTables;
647 for ( var i in vtables ) {
648 v_tables.push(vtables[i]);
651 pool.getConnection(function(err,connection) {
654 console.error( String(err) ); // ALARM
655 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
658 connection.query(sql,function(err, rows, fields)
660 console.log('rows:' + JSON.stringify(rows,null,2));
661 // http://stackoverflow.com/questions/14528385/how-to-convert-json-object-to-javascript-array
662 //logger.debug(Object.keys(rows[0]).map(function(v) { return rows[0][v]; }));
663 for ( var i in rows ){
664 rdata.push(Object.keys(rows[i]).map(function(v) { return rows[i][v]; }));
665 //logger.debug(Object.keys(rows[i]).map(function(v) { return rows[i][v]; }));
666 //logger.debug([i, rows[i]]);
668 for ( var x in rdata ){
669 for ( var j in rdata[x] ){
670 console.log('rdata[' + x + ']: ' + rdata[x][j]);
673 console.log('rdata:' + rdata[0]);
674 console.log('fields:' + JSON.stringify(fields,null,2));
675 connection.release();
677 res.render(rdestination, {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
681 res.render(rdestination, { displayTable:true, vtables:v_tables, rows:rdata, fields:fields, result:resultObj, privilege:privilegeObj, header:process.env.MAIN_MENU } );
685 }); // end getConnection
688 exports.getVnfProfile = function(req,res,resultObj,privilegeObj){
690 pool.getConnection(function(err,connection) {
693 console.error( String(err) ); // ALARM
694 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
698 connection.query("SELECT vnf_type,availability_zone_count,equipment_role "
699 + "FROM VNF_PROFILE ORDER BY VNF_TYPE", function(err, rows)
701 connection.release();
703 res.render("mobility/vnfProfile", {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
707 res.render('mobility/vnfProfile', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
711 console.log('after query');
712 }); // end getConnection
716 exports.getVnfPreloadData = function(req,res,dbtable,callback){
718 pool.getConnection(function(err,connection) {
721 console.error( String(err) ); // ALARM
722 callback(err, 'Unable to get database connection.' + err);
726 // Need DB lookup logic here
727 connection.query("SELECT preload_data FROM " + dbtable + " WHERE id="
728 + req.query.id, function(err, rows)
730 connection.release();
736 var buffer = rows[0].preload_data;
737 var decode_buffer = decodeURI(buffer);
738 var content = JSON.parse(decode_buffer);
739 callback(null,content);
743 }); // end getConnection
748 exports.getVnfNetworkData = function(req,res,resultObj,privilegeObj){
751 pool.getConnection(function(err,connection) {
754 console.error( String(err) ); // ALARM
755 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
759 // Need DB lookup logic here
760 connection.query("SELECT id,svc_request_id,svc_action,status,filename,ts,preload_data "
761 + "FROM PRE_LOAD_VNF_NETWORK_DATA ORDER BY id", function(err, rows)
763 var msgArray = new Array();
765 connection.release();
767 msgArray = 'Database Error: '+ String(err);
768 res.render("mobility/vnfPreloadNetworkData", {
769 result:{code:'error',msg:msgArray},
770 preloadImportDirectory: properties.preloadImportDirectory,
771 header:process.env.MAIN_MENU
777 for( r=0; r<rows.length; r++)
780 rowObj.row = rows[r];
781 if ( rows[r].filename.length > 0 )
784 var buffer = rows[r].preload_data;
785 var decode_buffer = decodeURI(buffer);
786 var filecontent = JSON.parse(decode_buffer);
787 rowObj.filecontent = filecontent;
788 rowObj.network_name = filecontent.input["network-topology-information"]["network-topology-identifier"]["network-name"];
789 rowObj.network_type = filecontent.input["network-topology-information"]["network-topology-identifier"]["network-type"];
792 msgArray.push('File ' + rows[r].filename + ' has invalid JSON. Error:' + error);
796 rowObj.filecontent = '';
798 retData.push(rowObj);
800 if(msgArray.length>0){
801 resultObj.code = 'failure';
802 resultObj.msg = msgArray;
804 res.render('mobility/vnfPreloadNetworkData', {
807 privilege:privilegeObj,
808 preloadImportDirectory: properties.preloadImportDirectory,
809 header:process.env.MAIN_MENU
814 }); // end getConnection
817 exports.getVnfData = function(req,res,resultObj,privilegeObj){
820 pool.getConnection(function(err,connection) {
823 console.error( String(err) ); // ALARM
824 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
828 // Need DB lookup logic here
829 connection.query("SELECT id,svc_request_id,svc_action,status,filename,ts,preload_data "
830 + "FROM PRE_LOAD_VNF_DATA ORDER BY id", function(err, rows)
832 var msgArray = new Array();
834 connection.release();
836 msgArray = 'Database Error: '+ String(err);
837 res.render("mobility/vnfPreloadData", {
838 result:{code:'error',msg:msgArray},
839 preloadImportDirectory: properties.preloadImportDirectory,
840 header:process.env.MAIN_MENU
846 for( r=0; r<rows.length; r++)
849 rowObj.row = rows[r];
850 if ( rows[r].filename.length > 0 )
853 var buffer = rows[r].preload_data;
854 var s_buffer = decodeURI(buffer);
855 var filecontent = JSON.parse(s_buffer);
856 rowObj.filecontent = filecontent;
857 rowObj.vnf_name = filecontent.input["vnf-topology-information"]["vnf-topology-identifier"]["vnf-name"];
858 rowObj.vnf_type = filecontent.input["vnf-topology-information"]["vnf-topology-identifier"]["vnf-type"];
861 msgArray.push('File ' + rows[r].filename + ' has invalid JSON. Error:' + error);
865 rowObj.filecontent = '';
867 retData.push(rowObj);
869 if(msgArray.length>0){
870 resultObj.code = 'failure';
871 resultObj.msg = msgArray;
873 res.render('mobility/vnfPreloadData',{
874 retData:retData, result:resultObj,
875 privilege:privilegeObj,
876 header:process.env.MAIN_MENU,
877 preloadImportDirectory: properties.preloadImportDirectory
882 }); // end getConnection
886 exports.findAdminUser = function(email,res,callback) {
890 pool.getConnection(function(err,connection) {
892 console.error( String(err) ); // ALARM
893 res.render("pages/login", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
897 // Need DB lookup logic here
898 connection.query("SELECT email, AES_DECRYPT(password, '" + enckey + "') password, privilege FROM PORTAL_USERS WHERE email='" + email + "'", function(err, rows) {
900 connection.release();
902 if ( rows.length > 0 )
904 rows.forEach(function(row){
907 "password" : row.password,
908 "privilege" : row.privilege };
913 console.log("no rows returned");
914 res.render("pages/login", {result:{code:'error', msg:'User is not in database.'},header:process.env.MAIN_MENU});
918 res.render("pages/err", {result:{code:'error',msg:'Unexpected no rows returned from database. '+ String(err)},header:process.env.MAIN_MENU});
922 }); // end getConnection
926 exports.addRow = function(sql,req,res,callback){
930 pool.getConnection(function(err,connection) {
933 console.error( String(err) ); // ALARM
934 callback(err, 'Unable to get database connection.' + err);
938 connection.query(sql, function(err,result){
939 connection.release();
941 console.debug('Database operation failed. ' + err );
942 callback(err,'Database operation failed. ' + err );
946 callback(null, result.affectedRows);
949 }); // end getConnection
954 exports.addVnfProfile = function(row,res,callback){
958 if ( row.length < 3 )
960 console.log('Row [' + row + '] does not have enough fields.');
961 callback(null, 'Row [' + row + '] does not have enough fields.');
965 sqlInsert = "INSERT INTO VNF_PROFILE ("
966 + "vnf_type,availability_zone_count,equipment_role) VALUES ("
967 + "'" + row[0] + "',"
969 + ",'" + row[2] + "')";
971 console.log('SQL='+sqlInsert);
973 pool.getConnection(function(err,connection) {
976 console.log( String(err) ); // ALARM
977 callback(err, 'Unable to get database connection.');
980 connection.query(sqlInsert, function(err,result){
981 connection.release();
983 console.log('Row [' + row + '] failed to insert. ' + err );
984 callback(null,'Row [' + row + '] failed to insert. ' + err );
991 }); // end getConnection
995 // Add to SVC_LOGIC table
996 exports.addDG = function(_module, version, rpc, mode, xmlfile, req,res){
998 var privilegeObj = req.session.loggedInAdmin;
1001 pool.getConnection(function(err,connection) {
1003 console.error( String(err) ); // ALARM
1004 res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
1017 //logger.debug( JSON.stringify(post));
1019 //connection.query(sqlRequest, function(err,result){
1020 connection.query('INSERT INTO SVC_LOGIC SET ?', post, function(err,result){
1023 // Need DB lookup logic here
1024 connection.query("SELECT module,rpc,version,mode,active,graph FROM SVC_LOGIC", function(err, rows) {
1027 if ( rows.length > 0 )
1029 res.render('sla/list', { rows: rows, result:{code:'',msg:''}, privilege:privilegeObj,header:process.env.MAIN_MENU } );
1032 console.log("no rows returned");
1033 res.render("pages/home");
1037 connection.on('error', function(err){
1038 connection.release();
1039 console.log(500, "An error has occurred -- " + err);
1040 res.render("pages/home");
1045 connection.release();
1047 //connection.query('INSERT INTO SVC_LOGIC SET ?', post, function(err,result){
1049 //logger.debug('inserted rows');
1053 //res.render('pages/home');
1057 }); // end of getConnection
1060 exports.activate = function(req,res,_module,rpc,version,mode,callback){
1062 var sql = "UPDATE SVC_LOGIC SET active=\'Y\' WHERE module=\'"
1063 + _module + "' AND rpc=\'"
1064 + rpc + "' AND version=\'"
1065 + version + "' AND mode=\'"
1068 console.log('SQL='+sql);
1070 pool.getConnection(function(err,connection) {
1073 console.error( String(err) ); // ALARM
1074 callback(err, 'Unable to get database connection.' + err);
1078 connection.query(sql, function(err,result){
1080 connection.release();
1082 callback(err, 'Unable to get database connection.' + err);
1089 }); // end getConnection
1093 exports.deactivate = function(req,res,_module,rpc,version,mode,callback){
1095 var sql = "UPDATE SVC_LOGIC SET active=\'N\' WHERE module=\'"
1096 + _module + "' AND rpc=\'"
1097 + rpc + "' AND version=\'"
1098 + version + "' AND mode=\'"
1101 console.log('SQL='+sql);
1103 pool.getConnection(function(err,connection) {
1106 console.error( String(err) ); // ALARM
1107 callback(err, 'Unable to get database connection.' + err);
1111 connection.query(sql, function(err,result){
1113 connection.release();
1115 callback(err, 'Unable to get database connection.' + err);
1122 }); // end getConnection
1125 exports.global_deactivate = function(req,res,_module,rpc,mode,callback){
1127 var sql = "UPDATE SVC_LOGIC SET active=\'N\' WHERE module=\'"
1128 + _module + "' AND rpc=\'"
1129 + rpc + "' AND mode=\'"
1133 pool.getConnection(function(err,connection) {
1136 callback(err, 'Unable to get database connection.' + err);
1140 connection.query(sql, function(err,result){
1142 connection.release();
1151 }); // end getConnection
1155 exports.deleteDG = function(req,res,_module,rpc,version,mode,callback){
1157 var sql = "DELETE FROM SVC_LOGIC WHERE module=\'"
1158 + _module + "' AND rpc=\'"
1159 + rpc + "' AND version=\'"
1160 + version + "' AND mode=\'"
1163 console.log('SQL='+sql);
1165 pool.getConnection(function(err,connection) {
1168 console.error( String(err) ); // ALARM
1169 callback(err, 'Unable to get database connection.' + err);
1173 connection.query(sql, function(err,result){
1175 connection.release();
1177 callback(err, 'Unable to get database connection.' + err);
1184 }); // end getConnection
1189 function padLeft(nr, n, str){
1190 return Array(n-String(nr).length+1).join(str||'0')+nr;