From 2ec03ce351e64ce668c47f275f12021964a18010 Mon Sep 17 00:00:00 2001 From: Piero Cena Date: Fri, 29 Sep 2017 15:54:19 +0200 Subject: [PATCH 01/12] - new conf.json - winston logger - bug fixing --- app.js | 11 +++++---- conf.json | 18 ++++++++++++++- logger.js | 49 +++++++++++++++++++++++++++++++++++++++++ mobius.js | 27 ++++++++++++++--------- mobius/acp.js | 18 +++++++++++++++ mobius/db_action.js | 27 +++++++++++++++++++++++ mobius/grp.js | 3 ++- mobius/mobiusdb_pre.sql | 14 ++++++++++++ mobius/resource.js | 10 ++++++--- mobius/sql_action.js | 23 ++++++++++--------- mobius/ts_agent.js | 13 +++++++---- package.json | 5 ++++- pxy_coap.js | 4 ++-- 13 files changed, 185 insertions(+), 37 deletions(-) create mode 100644 logger.js create mode 100644 mobius/mobiusdb_pre.sql diff --git a/app.js b/app.js index 3f5764b6..2b3337ba 100644 --- a/app.js +++ b/app.js @@ -17,6 +17,9 @@ process.env.NODE_ENV = 'production'; //process.env.NODE_ENV = 'development'; +require('./logger.js'); +logger.level = 'debug'; + var fs = require('fs'); var http = require('http'); var express = require('express'); @@ -67,7 +70,7 @@ global.randomValue = function (qty) { return crypto.randomBytes(qty).toString(2); }; -var logDirectory = __dirname + '/log'; +var logDirectory = global.logDir; // ensure log directory exists fs.existsSync(logDirectory) || fs.mkdirSync(logDirectory); @@ -117,7 +120,7 @@ if (use_clustering) { cluster.fork(); }); - db.connect(usedbhost, 3306, 'root', usedbpass, function (rsc) { + db.connect(usedbhost, 3306, usedbuser, usedbpass, function (rsc) { if (rsc == '1') { cb.create(function (rsp) { console.log(JSON.stringify(rsp)); @@ -149,7 +152,7 @@ if (use_clustering) { // app.use(bodyParser.text({limit: '1mb', type: 'application/*+xml' })); - db.connect(usedbhost, 3306, 'root', usedbpass, function (rsc) { + db.connect(usedbhost, 3306, usedbuser, usedbpass, function (rsc) { if (rsc == '1') { if(usesecure === 'disable') { http.globalAgent.maxSockets = 1000000; @@ -179,7 +182,7 @@ if (use_clustering) { } } else { - db.connect(usedbhost, 3306, 'root', usedbpass, function (rsc) { + db.connect(usedbhost, 3306, usedbuser, usedbpass, function (rsc) { if (rsc == '1') { cb.create(function (rsp) { console.log(JSON.stringify(rsp)); diff --git a/conf.json b/conf.json index b0de930b..ef178df9 100644 --- a/conf.json +++ b/conf.json @@ -1,4 +1,20 @@ { + "csebase": "onem2m", + "cseid": "/onem2m", "csebaseport": "7579", - "dbpass": "dksdlfduq2" + "csetype": "in", + "dbhost": "localhost", + "dbuser": "mobius", + "dbpass": "mobius", + "dbname": "mobiusdb", + "superadm_usr": "superadmin", + "superadm_pwd": "f7c6c12d", + "pxymqttport": 7580, + "pxycoapport": 5683, + "pxywsport": 7577, + "tsagentport": 7582, + "mqttbroker": "localhost", + "secure": "disable", + "authorization": true, + "logDir": "./log" } diff --git a/logger.js b/logger.js new file mode 100644 index 00000000..b99dae1b --- /dev/null +++ b/logger.js @@ -0,0 +1,49 @@ +#!/usr/bin/env node +/** +* Logger node module +* @author piero@tilab +* @version 0.0.3 +* @description winston wrapper. nb: use console overrides in sub-modules of main app +*/ +var fs = require('fs'); +var winston = require('winston'); +var dateFormat = require("dateformat"); +var datePattern = 'yyyyMMdd'; +// Create the log directory if it does not exist +if (!fs.existsSync(logDir)) { + fs.mkdirSync(logDir); +} +var tsFormat = function() { return dateFormat(Date.now(), "dd/mm/yyyy HH:MM:ss.l"); } +global.logger = new (winston.Logger)({ + transports: [ + new (winston.transports.Console)({ + timestamp: tsFormat, + formatter: function(options) { + return options.timestamp() +' ['+ options.level.toUpperCase() +'] '+ (options.message ? options.message : '') + + (options.meta && Object.keys(options.meta).length ? '\n\t'+ JSON.stringify(options.meta) : '' ); + } + }), + new (require('winston-daily-rotate-file'))({ + filename: `${logDir}/.log`, + timestamp: tsFormat, + datePattern: 'log-'+datePattern, + prepend: true, + json: false, + level: 'info', + handleExceptions: true, + humanReadableUnhandledException: true, + zippedArchive: true + }) + ], + exitOnError: false +}); +// console override +console.log = logger.info; +console.info = logger.info; +console.error = logger.error; +console.warn = logger.warn; +// module export +module.exports.logger = logger; +logger.fileName = function() { + return 'log-'+dateFormat(Date.now(), datePattern.toLowerCase()); +} diff --git a/mobius.js b/mobius.js index e010b92a..1050c857 100644 --- a/mobius.js +++ b/mobius.js @@ -20,26 +20,31 @@ var conf = JSON.parse(data); global.defaultnmtype = 'short'; global.defaultbodytype = 'json'; - // my CSE information -global.usecsetype = 'in'; // select 'in' or 'mn' or asn' -global.usecsebase = 'Mobius'; -global.usecseid = '/Mobius'; +global.usecsetype = conf.csetype; // select 'in' or 'mn' or asn' +global.usecsebase = conf.csebase; +global.usecseid = conf.cseid; global.usecsebaseport = conf.csebaseport; -global.usedbhost = 'localhost'; +global.usedbhost = conf.dbhost; +global.usedbuser = conf.dbuser; global.usedbpass = conf.dbpass; +global.usedbname = conf.dbname; +global.usepxymqttport = conf.pxymqttport; +global.usepxycoapport = conf.pxycoapport; +global.usepxywsport = conf.pxywsport; +global.usetsagentport = conf.tsagentport; -global.usepxywsport = '7577'; -global.usepxymqttport = '7578'; - +global.usemqttbroker = conf.mqttbroker; // mqttbroker for mobius -global.usetsagentport = '7582'; +global.usesecure = conf.secure; -global.usemqttbroker = 'localhost'; // mqttbroker for mobius +global.superadm_usr = conf.superadm_usr; +global.superadm_pwd = conf.superadm_pwd; +global.authorization = conf.authorization; +global.logDir = conf.logDir; -global.usesecure = 'disable'; if(usesecure === 'enable') { global.usemqttport = '8883'; } diff --git a/mobius/acp.js b/mobius/acp.js index 01ad80d9..c8f3d49a 100644 --- a/mobius/acp.js +++ b/mobius/acp.js @@ -87,6 +87,15 @@ exports.build_acp = function(request, response, resource_Obj, body_Obj, callback responder.response_result(request, response, 400, body_Obj, 4000, request.url, body_Obj['dbg']); callback('0', resource_Obj); return '0'; + } else { // [TIM]: check also acr + if(!body_Obj[rootnm].pv.acr) { + body_Obj = {}; + + body_Obj['dbg'] = 'pv.acr as M Tag should be included'; + responder.response_result(request, response, 400, body_Obj, 4000, request.url, body_Obj['dbg']); + callback('0', resource_Obj); + return '0'; + } } if(!body_Obj[rootnm].pvs) { @@ -96,6 +105,15 @@ exports.build_acp = function(request, response, resource_Obj, body_Obj, callback responder.response_result(request, response, 400, body_Obj, 4000, request.url, body_Obj['dbg']); callback('0', resource_Obj); return '0'; + } else { // [TIM]: check also acr + if(!body_Obj[rootnm].pvs.acr) { + body_Obj = {}; + + body_Obj['dbg'] = 'pvs.acr as M Tag should be included'; + responder.response_result(request, response, 400, body_Obj, 4000, request.url, body_Obj['dbg']); + callback('0', resource_Obj); + return '0'; + } } // body diff --git a/mobius/db_action.js b/mobius/db_action.js index a9f6fb5d..80ab1294 100644 --- a/mobius/db_action.js +++ b/mobius/db_action.js @@ -74,4 +74,31 @@ exports.getResult = function(query, db_Obj, callback) { }); }; +/* [TIM] using fields escape */ +exports.getResultEsc = function(query, values, callback) { + if(mysql_pool == null) { + console.error("mysql is not connected"); + return '0'; + } + + mysql_pool.getConnection(function (err, connection) { + if (err) { + return callback(err, null); + } else if (connection) { + connection.query({ + sql: query, // 'SELECT * FROM `table` WHERE `field1` = ?', + timeout: 60000, // 60s + values: values, // ['field1_val'] + }, function (err, rows, fields) { + connection.release(); + if (err) { + return callback(true, err); + } + return callback(null, rows); + }); + } else { + return callback(true, "No Connection"); + } + }); +}; diff --git a/mobius/grp.js b/mobius/grp.js index d649a839..7cd2aa4b 100644 --- a/mobius/grp.js +++ b/mobius/grp.js @@ -489,7 +489,8 @@ exports.modify_grp = function(request, response, resource_Obj, body_Obj, callbac resource_Obj[rootnm].mid = body_Obj[rootnm].mid; if(resource_Obj[rootnm].mt != '0') { - check_mtv(resource_Obj[rootnm].mt, resource_Obj[rootnm].mid, function(rsc, results_mid) { + // [TIM] error, request, response parameters missing + check_mtv(request, response, resource_Obj[rootnm].mt, resource_Obj[rootnm].mid, function(rsc, results_mid) { if(rsc == '0') { // mt inconsistency if(results_mid.length == '0') { body_Obj = {}; diff --git a/mobius/mobiusdb_pre.sql b/mobius/mobiusdb_pre.sql new file mode 100644 index 00000000..923d4a70 --- /dev/null +++ b/mobius/mobiusdb_pre.sql @@ -0,0 +1,14 @@ +subscribe resp_topic as /oneM2M/# +mqtt_message sent: /oneM2M/req/nbiot_cons/onem2m_e65baa96/json +{ 'm2m:rqp': + { op: '2', + to: '/onem2m/nbiot', + fr: 'nbiot_cons', + rqi: 12345, + pc: '' } } +mqtt_message received: + >topic: /oneM2M/req/nbiot_cons/onem2m_e65baa96/json + >msg: {"m2m:rqp":{"op":"2","to":"/onem2m/nbiot","fr":"nbiot_cons","rqi":12345,"pc":""}} +mqtt_message received: + >topic: /oneM2M/resp/nbiot_cons/onem2m_e65baa96/json + >msg: {"m2m:rsp":{"rsc":2000,"rqi":12345,"pc":{"m2m:ae":{"pi":"Sy2XMSpbb","ty":2,"ct":"20170706T085259","ri":"r1NX_cOiVZ","rn":"nbiot","lt":"20170706T085259","et":"20270706T085259","acpi":["/onem2m/acp_nbiot"],"aei":"nbiot_prod","rr":true}}}} \ No newline at end of file diff --git a/mobius/resource.js b/mobius/resource.js index 2d71e7c1..ef640d9f 100644 --- a/mobius/resource.js +++ b/mobius/resource.js @@ -1184,10 +1184,10 @@ function search_action(request, response, seq, resource_Obj, ri_list, strObj, pr console.time('search_resource'); } - if(request.query.ty != null) { - tbl = request.query.ty; + /* if(request.query.ty != null) { + tbl = request.query.ty; // [TIM]: query.ty can be an ARRAY not only single value, so error in typeRsrc[tbl] seq = ty_list.length; - } + } */ db_sql.select_in_ri_list(responder.typeRsrc[tbl], ri_list, 0, finding_Obj, 0, function (err, search_Obj) { if(!err) { @@ -1368,6 +1368,10 @@ exports.retrieve = function(request, response, comm_Obj) { if (rsc == '1') { strObj += '}'; resource_Obj = JSON.parse(strObj); + + console.log("retrieve - rcn:",ri_list, resource_Obj) + + for (var index in resource_Obj) { if (resource_Obj.hasOwnProperty(index)) { resource_Obj[index] = merge(resource_Obj[index], search_Obj[index]); diff --git a/mobius/sql_action.js b/mobius/sql_action.js index a4c27eb1..1f3d9845 100644 --- a/mobius/sql_action.js +++ b/mobius/sql_action.js @@ -181,11 +181,10 @@ exports.insert_cin = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { if(!err) { var con_type = getType(con); - var sql = util.format('insert into cin (ri, cr, cnf, cs, cin.or, con) ' + - 'value (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', - ri, cr, cnf, cs, or, - (con_type == 'string') ? con.replace(/'/g, "\\'") : JSON.stringify(con)); - db.getResult(sql, '', function (err, results) { + // [TIM] fields escape is necessary for "content" field if containing special chars + var sql = 'insert into cin (ri, cr, cnf, cs, cin.or, con) value (?, ?, ?, ?, ?, ?)'; + var values = [ri, cr, cnf, cs, or, (con_type == 'string') ? con : JSON.stringify(con)]; + db.getResultEsc(sql, values, function (err, results) { if(!err) { console.timeEnd('insert_cin ' + ri); callback(err, results); @@ -197,6 +196,8 @@ exports.insert_cin = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); } }); + + } else { callback(err, results); @@ -698,12 +699,14 @@ function build_discovery_sql(ri, query, cur_lim, pi_list, bef_ct) { ty_str += util.format('ty = \'%s\'', query.ty); } else { + // [TIM]: query.ty must be splitted (ty can be 2 digits eg. ty=1,2,23) + var ty = query.ty.toString().split(','); query_where += ' ('; ty_str += ' ('; - for(i = 0; i < query.ty.length; i++) { - query_where += util.format('a.ty = \'%s\'', query.ty[i]); - ty_str += util.format('ty = \'%s\'', query.ty[i]); - if(i < query.ty.length-1) { + for(i = 0; i < ty.length; i++) { + query_where += util.format('a.ty = \'%s\'', ty[i]); + ty_str += util.format('ty = \'%s\'', ty[i]); + if(i < ty.length-1) { query_where += ' or '; ty_str += ' or '; } @@ -845,7 +848,7 @@ function build_discovery_sql(ri, query, cur_lim, pi_list, bef_ct) { query_where = util.format("select a.* from (select ri from lookup where ((ri = \'" + ri + "\') or pi in ("+JSON.stringify(pi_list).replace('[','').replace(']','')+")) %s and (ct > \'%s\')) b left join lookup as a on b.ri = a.ri", ty_str, bef_ct) + query_where; //query_where = util.format("select a.* from (select ri from lookup where ((ri = \'" + ri + "\') or pi in ("+JSON.stringify(pi_list).replace('[','').replace(']','')+")) %s and (ct > \'%s\' and ct <= \'%s\') limit 1000) b left join lookup as a on b.ri = a.ri", ty_str, bef_ct, cur_ct) + query_where; //query_where = util.format("select a.* from (select ri from lookup where (pi in ("+JSON.stringify(pi_list).replace('[','').replace(']','')+")) %s and (ct > \'%s\' and ct <= \'%s\') order by ct desc limit 1000) b left join lookup as a on b.ri = a.ri", ty_str, bef_ct, cur_ct) + query_where; - + return query_where; } diff --git a/mobius/ts_agent.js b/mobius/ts_agent.js index a756c894..1efdd612 100644 --- a/mobius/ts_agent.js +++ b/mobius/ts_agent.js @@ -213,7 +213,7 @@ var ts_timer_id = {}; var missing_detect_check = function(pei, mdd, mdt, cni, ri, callback) { var rsc = {}; rsc.status = 2000; - if((pei != null && pei != '' && pei != '0') && (mdd != null && mdd == 'TRUE') && mdt != '0') { + if((pei != null && pei != '' && pei != '0') && (mdd != null && mdd.toUpperCase() == 'TRUE') && mdt != '0') { if(ts_timer[ri] == null) { //ts_timer[ri] = new process.EventEmitter(); var events = require('events'); @@ -306,11 +306,11 @@ ts_app.post('/missingDataDetect', onem2mParser, function(request, response) { if (jsonObj['m2m:dbg']) { var ts_ri = []; } - else if (jsonObj['m2m:uril']['_'] == null) { + else if (jsonObj['m2m:uril'] == null) { // [TIM] removed ['_'] ts_ri = []; } else { - ts_ri = jsonObj['m2m:uril']['_'].toString().split(' '); + ts_ri = jsonObj['m2m:uril'].toString().split(' '); // [TIM] removed ['_'] } var ts = {}; @@ -321,13 +321,18 @@ ts_app.post('/missingDataDetect', onem2mParser, function(request, response) { missing_detect_check(results_ts[0].pei, results_ts[0].mdd, results_ts[0].mdt, results_ts[0].cni, results_ts[0].ri, function (rsc) { console.log(rsc); }); + for (var i = 0; i < results_ts.length; i++) { // [TIM] cycle for all results + missing_detect_check(results_ts[i].pei, results_ts[i].mdd, results_ts[i].mdt, results_ts[i].cni, results_ts[i].ri, function (rsc) { + //console.log(rsc); + }); + } } } response.setHeader('X-M2M-RSC', '2000'); ts.status = '2000'; - ts.ri = jsonObj['m2m:uril']['_']; + ts.ri = jsonObj['m2m:uril']; // [TIM] removed ['_'] response.status(200).end(JSON.stringify(ts)); }); } diff --git a/package.json b/package.json index 1ddae05b..e23838f5 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "cbor": "^3.0.0", "coap": "^0.21.0", "crypto": "0.0.3", + "dateformat": "^3.0.2", "events": "^1.1.1", "express": "^4.15.1", "file-stream-rotator": "0.1.0", @@ -23,6 +24,8 @@ "url": "^0.11.0", "util": "^0.10.3", "websocket": "^1.0.24", + "winston": "^2.3.1", + "winston-daily-rotate-file": "^1.7.2", "xml2js": "^0.4.17", "xmlbuilder": "^9.0.1" }, @@ -34,4 +37,4 @@ }, "author": "Il Yeup Ahn, KETI", "license": "ISC" -} \ No newline at end of file +} diff --git a/pxy_coap.js b/pxy_coap.js index e1e6e370..3a9e3c3b 100644 --- a/pxy_coap.js +++ b/pxy_coap.js @@ -101,10 +101,10 @@ exports.coap_watchdog = function () { else if(coap_state === 'connect') { if(pxycoap_server == null) { pxycoap_server = coap.createServer(); - pxycoap_server.listen(usecsebaseport, function() { + pxycoap_server.listen(usepxycoapport, function() { var options = { host: 'localhost', - port: usecsebaseport, + port: usepxycoapport, pathname: '/'+usecsebase, method: 'get', confirmable: 'false', From 92d68206a57ffe0d41dd60e1ae248df69818a322 Mon Sep 17 00:00:00 2001 From: Piero Cena Date: Mon, 2 Oct 2017 09:29:06 +0200 Subject: [PATCH 02/12] - basic authentication - users management and db - notification & http forwarding both HTTP and HTTPS using proxy --- app.js | 85 ++++++++++++++++---- auth.js | 170 ++++++++++++++++++++++++++++++++++++++++ mobius/mobiusdb_usr.sql | 20 +++++ mobius/sgn.js | 112 +++++++++++++------------- mobius/sql_action.js | 75 ++++++++++++++++++ package.json | 1 + 6 files changed, 393 insertions(+), 70 deletions(-) create mode 100644 auth.js create mode 100644 mobius/mobiusdb_usr.sql diff --git a/app.js b/app.js index 2b3337ba..21eba6cc 100644 --- a/app.js +++ b/app.js @@ -460,6 +460,24 @@ function check_http_body(request, response, callback) { } function check_http(request, response, callback) { + // [TIM] if configured check authorization before checking other headers + var body_Obj = {}; + + if (authorization) { + auth.check_head_auth(request, response, function(rsc) { + if (rsc == '0') { + callback('0', body_Obj); + return '0'; + } else { + _check_http(request, response, callback); + } + }); + } else { + _check_http(request, response, callback); + } +} + +function _check_http(request, response, callback) { request.headers.rootnm = 'dbg'; var body_Obj = {}; @@ -1442,6 +1460,9 @@ var onem2mParser = bodyParser.text( ); //var onem2mParser = bodyParser.text({ limit: '1mb', type: '*/*' }); +// [TIM] import auth library and config it +const auth = require("./auth.js"); +auth.init({onem2mParser:onem2mParser, responder:responder, crypto:crypto, db:db, db_sql:db_sql, logger:logger}); //////// contribution code // Kevin Lee, Executive Director, Unibest INC, Owner of Howchip.com @@ -1507,7 +1528,7 @@ app.post(onem2mParser, function (request, response) { responder.error_result(request, response, 500, 5000, body_Obj['dbg']); } else if (rsc == '1') { - forward_http(body_Obj.forwardcbhost, body_Obj.forwardcbport, request, response); + forward_http(body_Obj, request, response); } else if (rsc == '2') { responder.error_result(request, response, 500, 5000, 'forwarding with mqtt is not supported'); @@ -1573,7 +1594,7 @@ app.get(onem2mParser, function (request, response) { responder.error_result(request, response, 500, 5000, body_Obj['dbg']); } else if (rsc == '1') { - forward_http(body_Obj.forwardcbhost, body_Obj.forwardcbport, request, response); + forward_http(body_Obj, request, response); } else if (rsc == '2') { responder.error_result(request, response, 500, 5000, 'forwarding with mqtt is not supported'); @@ -1643,7 +1664,7 @@ app.put(onem2mParser, function (request, response) { responder.error_result(request, response, 500, 5000, body_Obj['dbg']); } else if (rsc == '1') { - forward_http(body_Obj.forwardcbhost, body_Obj.forwardcbport, request, response); + forward_http(body_Obj, request, response); } else if (rsc == '2') { responder.error_result(request, response, 500, 5000, 'forwarding with mqtt is not supported'); @@ -1712,7 +1733,7 @@ app.delete(onem2mParser, function (request, response) { responder.error_result(request, response, 500, 5000, body_Obj['dbg']); } else if (rsc == '1') { - forward_http(body_Obj.forwardcbhost, body_Obj.forwardcbport, request, response); + forward_http(body_Obj, request, response); } else if (rsc == '2') { responder.error_result(request, response, 500, 5000, 'forwarding with mqtt is not supported'); @@ -1737,7 +1758,9 @@ function check_csr(absolute_url, callback) { body_Obj.forwardcbname = result_csr[0].cb.replace('/', ''); var poa_arr = JSON.parse(result_csr[0].poa); for (var i = 0; i < poa_arr.length; i++) { - if (url.parse(poa_arr[i]).protocol == 'http:') { + var prot = url.parse(poa_arr[i]).protocol; + if (prot == 'http:' || prot == 'https:') { + body_Obj.forwardcbprot = prot; body_Obj.forwardcbhost = url.parse(poa_arr[i]).hostname; body_Obj.forwardcbport = url.parse(poa_arr[i]).port; @@ -1745,7 +1768,7 @@ function check_csr(absolute_url, callback) { callback('1', body_Obj); } - else if (url.parse(poa_arr[i]).protocol == 'mqtt:') { + else if (prot == 'mqtt:') { body_Obj.forwardcbmqtt = url.parse(poa_arr[i]).hostname; callback('2', body_Obj); @@ -1771,16 +1794,48 @@ function check_csr(absolute_url, callback) { } -function forward_http(forwardcbhost, forwardcbport, request, response) { - var options = { - hostname: forwardcbhost, - port: forwardcbport, - path: request.url, - method: request.method, - headers: request.headers - }; +function forward_http(body_Obj, request, response) { + // [TIM} manage localhost, http and https, assuming there is a proxy configured + var path = request.url.replace(body_Obj.csr, body_Obj.forwardcbname); + var uri = body_Obj.forwardcbprot+"//"+body_Obj.forwardcbhost+":"+body_Obj.forwardcbport+path; + var ssl = body_Obj.forwardcbprot.indexOf("https:")!==-1; + var _http = http; + if (ssl) { + var HttpsProxyAgent = require('https-proxy-agent'); + console.log('[forward_https] uri: ' + uri); + var agent = new HttpsProxyAgent(process.env.https_proxy); + var options = { + hostname: body_Obj.forwardcbhost, + port: body_Obj.forwardcbport, + path: path, + method: request.method, + headers: request.headers, + agent: agent + }; + _http = https; + } else { + console.log('[forward_http] uri: ' + uri); + if (process.env.http_proxy) { + var options = { + hostname: url.parse(process.env.http_proxy).hostname, + port: url.parse(process.env.http_proxy).port, + path: uri, + method: request.method, + headers: request.headers + }; + } else { + var options = { + hostname: body_Obj.forwardcbhost, + port: body_Obj.forwardcbport, + path: request.url, + method: request.method, + headers: request.headers + }; + } + _http = http; + } - var req = http.request(options, function (res) { + var req = _http.request(options, function (res) { var fullBody = ''; res.on('data', function (chunk) { fullBody += chunk.toString(); diff --git a/auth.js b/auth.js new file mode 100644 index 00000000..573dee5e --- /dev/null +++ b/auth.js @@ -0,0 +1,170 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +var onem2mParser, responder, crypto, db, db_sql; + + +function check_head_auth(request, response, callback) { + // Check Authorization Header + var ip = request.headers['x-forwarded-for'] || request.connection.remoteAddress; + var agent = request.headers['user-agent']; + //logger.log("debug",'>>>>>>>ip:',ip, ip.indexOf("127.0.0.1"), request.url); + + if (agent==undefined) { + // it happens when locally invoked + //logger.log("debug",'>>>>>>>NO user-agent!!!!!!!!!!!!'); + callback('1'); + return '1'; + } else { + // external request + //logger.log("debug",'>>>>>>>user-agent:',agent); + } + + if ((request.headers['authorization'] == null || request.headers['authorization'] == '')) { + + request.headers.rootnm = 'dbg'; + request.headers.usebodytype = 'json'; + + responder.error_result(request, response, 401, 4001, 'Authorization Header is null'); + callback('0'); + return '0'; + } else { + // auth header present + var context = request.url.split(/[?#]/)[0].replace("/"+usecsebase+"/", "").split("/")[0]; + var auth = request.headers['authorization'].replace("Basic ", "").trim(); + auth = new Buffer(auth, 'base64').toString(); + //logger.log("debug",'>>>>>>>auth: ',request.headers['authorization'],auth,"context:",context,"url:",request.url); + var usr_parts = auth.split(":"); + //logger.log("debug",'>>>>>>>usr_parts: ',usr_parts); + if (usr_parts.length!=2) { + responder.error_result(request, response, 401, 4001, 'Unauthorized'); + callback('0'); + return '0'; + } + // superadm_usr + if (usr_parts[0]==superadm_usr && usr_parts[1]==superadm_pwd) { + //logger.log("debug",'>>>>>>>user: SUPERADMIN'); + callback('1'); + return '1'; + } + // check other users + if (request.url=="/"+usecsebase) { + // root not accessible for other users + responder.error_result(request, response, 401, 4001, 'Unauthorized'); + callback('0'); + return '0'; + } + var pwd_hash = crypto.createHash('sha256').update(usr_parts[1]).digest('base64'); + db_sql.get_user(usr_parts[0], + function (user_Obj) { + logger.log("debug",'>>>>>>>user: ',user_Obj); + if (user_Obj==null || (Array.isArray(user_Obj) && user_Obj.length==0)) { + // user not present + responder.error_result(request, response, 401, 4001, 'Unauthorized'); + callback('0'); + return '0'; + } else if (user_Obj[0].password!=pwd_hash) { + // password not match + responder.error_result(request, response, 401, 4001, 'Unauthorized'); + callback('0'); + return '0'; + } else { + logger.log("debug",'>>>>>>>user2: ',user_Obj,"url:",request.url); + // ok user present + if (user_Obj[0].role=="tenant") { + if (user_Obj[0].context.indexOf(context)!=-1) { + // ok, context enabled fot this user + callback('1'); + return '1'; + } else { + // context not match + responder.error_result(request, response, 403, 4003, 'Forbidden'); + callback('0'); + return '0'; + } + } else if (user_Obj[0].role=="guest") { + logger.log("debug",'>>>>>>>user: ',request.url, user_Obj); + var uris = user_Obj[0].context.split(","), test = false; + for (var k in uris) { +// if (request.url.indexOf(uris[k])==0) test = true; + if (request.url == uris[k]) { + test = true; + break; + } else if (match(request.url, uris[k])) { + test = true; + break; + } + } + if (test) { + // ok, context enabled fot this user + if (request.method=="POST") { + try { + var content_type = request.headers['content-type'].split(';'); + } + catch (e) { + responder.error_result(request, response, 400, 4000, 'content-type is null'); + callback('0'); + return '0'; + } + try { + var ty = content_type[1].split('=')[1]; + } + catch (e) { + responder.error_result(request, response, 400, 4000, 'ty is null'); + callback('0'); + return '0'; + } + if (ty=='4' || ty=='23') { + // ok, context and POST CIN, SUB enabled fot this guest + callback('1'); + return '1'; + } else { + responder.error_result(request, response, 415, 4015, 'You are not enabled to create resource of this type'); + callback('0'); + return '0'; + } + } else if (request.method=="GET") { + callback('1'); + return '1'; + } else { + responder.error_result(request, response, 405, 4005, 'Method Not Allowed'); + callback('0'); + return '0'; + } + } else { + // context not match + responder.error_result(request, response, 403, 4003, 'Forbidden'); + callback('0'); + return '0'; + } + + } + } + } + ); + } + + function match(txt, regularExpression) { + var re1 = new RegExp('^'+regularExpression+'/'); + var re2 = new RegExp('^'+regularExpression+'?'); + return re1.test(txt) || re2.test(txt); + } +} + +module.exports = {}; + +module.exports.check_head_auth = check_head_auth; + +module.exports.init = function(deps){ + console.log('[auth].init'); + // dependencies + onem2mParser = deps.onem2mParser; + responder = deps.responder; + crypto = deps.crypto; + db_sql = deps.db_sql; + db = deps.db; + logger = deps.logger; +} diff --git a/mobius/mobiusdb_usr.sql b/mobius/mobiusdb_usr.sql new file mode 100644 index 00000000..83ee50fe --- /dev/null +++ b/mobius/mobiusdb_usr.sql @@ -0,0 +1,20 @@ +USE mobiusdb; + +-- +-- Table structure for table `users` +-- + +DROP TABLE IF EXISTS `users`; + +CREATE TABLE `users` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `username` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, + `password` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, + `context` longtext CHARACTER SET utf8 COLLATE utf8_bin, + `role` varchar(10) DEFAULT NULL, + `data` longtext, + PRIMARY KEY (`id`), + UNIQUE KEY `id_UNIQUE` (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8; + +INSERT INTO `users` (`id`, `username`, `role`) VALUES (0, 'superadmin', 'superadmin'); diff --git a/mobius/sgn.js b/mobius/sgn.js index 2a547fa7..223d35f7 100644 --- a/mobius/sgn.js +++ b/mobius/sgn.js @@ -18,6 +18,7 @@ var util = require('util'); var url = require('url'); var http = require('http'); var https = require('https'); +var HttpsProxyAgent = require('https-proxy-agent'); var coap = require('coap'); var js2xmlparser = require('js2xmlparser'); var xmlbuilder = require('xmlbuilder'); @@ -186,7 +187,7 @@ function sgn_action(rootnm, check_value, results_ss, noti_Obj, sub_bodytype) { } if (sub_bodytype == 'xml') { - if (sub_nu.protocol == 'http:') { + if (sub_nu.protocol == 'http:' || sub_nu.protocol == 'https:') { node[Object.keys(node)[0]]['@'] = { "xmlns:m2m": "http://www.onem2m.org/xml/protocols", "xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance" @@ -214,7 +215,7 @@ function sgn_action(rootnm, check_value, results_ss, noti_Obj, sub_bodytype) { } } else if (sub_bodytype == 'cbor') { - if (sub_nu.protocol == 'http:') { + if (sub_nu.protocol == 'http:' || sub_nu.protocol == 'https:') { //node['m2m:'+Object.keys(node)[0]] = node[Object.keys(node)[0]]; //delete node[Object.keys(node)[0]]; bodyString = cbor.encode(node).toString('hex'); @@ -236,7 +237,7 @@ function sgn_action(rootnm, check_value, results_ss, noti_Obj, sub_bodytype) { } } else { // defaultbodytype == 'json') - if (sub_nu.protocol == 'http:') { + if (sub_nu.protocol == 'http:' || sub_nu.protocol == 'https:') { //node['m2m:'+Object.keys(node)[0]] = node[Object.keys(node)[0]]; //delete node[Object.keys(node)[0]]; request_noti_http(nu, results_ss.ri, JSON.stringify(node), sub_bodytype, xm2mri); @@ -314,68 +315,69 @@ exports.check = function(request, notiObj, check_value) { function request_noti_http(nu, ri, bodyString, bodytype, xm2mri) { - if(url.parse(nu).protocol == 'http:') { +// [TIM} manage localhost, http and https, assuming there is a proxy configured + var ssl = nu.indexOf("https:")!==-1; + var _http = http; + if (nu.indexOf("localhost")==-1 && process.env.http_proxy) { + console.log(" >request_SS ----> EXT: "+nu); + // external url + if (ssl) { + // https + var agent = new HttpsProxyAgent(process.env.https_proxy); + var options = { + hostname: url.parse(nu).hostname, + port: url.parse(nu).port, + path: url.parse(nu).path, + method: 'POST', + agent: agent + }; + _http = https; + } else { + // http + var options = { + hostname: url.parse(process.env.http_proxy).hostname, + port: url.parse(process.env.http_proxy).port, + path: nu, + method: 'POST' + }; + _http = http; + } + } else { + // local url var options = { hostname: url.parse(nu).hostname, port: url.parse(nu).port, path: url.parse(nu).path, - method: 'POST', - headers: { - 'X-M2M-RI': xm2mri, - 'Accept': 'application/'+bodytype, - 'X-M2M-Origin': usecseid, - 'Content-Type': 'application/'+bodytype, - 'ri': ri - } + method: 'POST' }; - - var bodyStr = ''; - var req = http.request(options, function (res) { - res.on('data', function (chunk) { - bodyStr += chunk; - }); - - res.on('end', function () { - if(res.statusCode == 200 || res.statusCode == 201) { - console.log('----> [request_noti_http] response for notification through http ' + res.headers['x-m2m-rsc'] + ' - ' + ri); - ss_fail_count[res.req._headers.ri] = 0; - } - }); - }); - } - else { - options = { - hostname: url.parse(nu).hostname, - port: url.parse(nu).port, - path: url.parse(nu).path, - method: 'POST', - headers: { - 'X-M2M-RI': xm2mri, - 'Accept': 'application/'+bodytype, - 'X-M2M-Origin': usecseid, - 'Content-Type': 'application/'+bodytype, - 'ri': ri - }, - ca: fs.readFileSync('ca-crt.pem') - }; - - req = https.request(options, function (res) { - res.on('data', function (chunk) { - bodyStr += chunk; - }); - - res.on('end', function () { - if(res.statusCode == 200 || res.statusCode == 201) { - console.log('----> [request_noti_http] response for notification through http ' + res.headers['x-m2m-rsc'] + ' - ' + ri); - ss_fail_count[res.req._headers.ri] = 0; - } - }); - }); } + options.headers = { + 'X-M2M-RI': xm2mri, + 'Accept': 'application/'+bodytype, + 'X-M2M-Origin': usecseid, + 'Content-Type': 'application/'+bodytype, + 'ri': ri + }; + var bodyStr = ''; + var req = _http.request(options, function (res) { + res.on('data', function (chunk) { + bodyStr += chunk; + }); + + res.on('end', function () { + if(res.statusCode == 200 || res.statusCode == 201) { + console.log('----> [request_noti_http] response for notification through http ' + res.headers['x-m2m-rsc'] + ' - ' + ri); + ss_fail_count[res.req._headers.ri] = 0; + } else { + console.log('----> response for notification through http:', res.statusCode, res.statusMessage); + } + }); + }); req.on('error', function (e) { if(e.message != 'read ECONNRESET') { console.log('[request_noti_http] problem with request: ' + e.message); + req.abort(); } }); diff --git a/mobius/sql_action.js b/mobius/sql_action.js index 1f3d9845..0ce2d66a 100644 --- a/mobius/sql_action.js +++ b/mobius/sql_action.js @@ -1653,3 +1653,78 @@ exports.delete_req = function (callback) { } }); }; + +// [TIM] users management + +exports.get_user = function (username, callback) { + if (username) + var sql = util.format("select * from users where username = \'%s\';", username); + else + sql = util.format("select id,username,context,role,data from users where role<>'superadmin';"); + + db.getResult(sql, '', function (err, user_Obj) { + if(!err) { + callback(user_Obj); + } else { + callback(null); + } + }); +}; + +exports.insert_user = function(user_Obj, callback) { + console.time('insert_user ' + user_Obj.username); + if (user_Obj.data==undefined) user_Obj.data = null; + var sql = util.format('insert into users (username,context,role,password,`data`) ' + + 'value (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', + user_Obj.username, user_Obj.context, user_Obj.role, user_Obj.hashPwd, user_Obj.data); + db.getResult(sql, '', function (err, results) { + if(!err) { + console.timeEnd('insert_user ' + user_Obj.username); + callback(); + } else { + callback(err); + } + }); +}; + +exports.update_user = function (user_Obj, callback) { + console.time('update_user ' + user_Obj.username); + if (!user_Obj.context && !user_Obj.role) { + // update personal data + var sql2 = 'update users set `data` = ? where username = ?'; + var values = [user_Obj.data, user_Obj.username]; + } else { + // update all user data (except pwd) + var sql2 = 'update users set context = ?, role = ?, `data` = ? where username = ?'; + var values = [user_Obj.context, user_Obj.role, user_Obj.data, user_Obj.username]; + } + db.getResult1(sql2, values, function (err, results) { + if (!err) { + console.timeEnd('update_user ' + user_Obj.username); + callback(); + } else { + callback(err); + } + }); +}; + +exports.update_user_pwd = function (user_Obj, callback) { + console.time('update_user_pwd ' + user_Obj.username); + var sql2 = 'update users set password = ? where username = ?'; + var values = [user_Obj.hashPwd, user_Obj.username]; + db.getResult1(sql2, values, function (err, results) { + if (!err) { + console.timeEnd('update_user_pwd ' + user_Obj.username); + callback(); + } else { + callback(err); + } + }); +}; + +exports.delete_user = function (id, callback) { + var sql = util.format("DELETE FROM users WHERE id = \'%s\'", id); + db.getResult(sql, '', function (err, results) { + callback(err, results); + }); +}; \ No newline at end of file diff --git a/package.json b/package.json index e23838f5..2d57c0f3 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "fs": "0.0.2", "http": "0.0.0", "https": "^1.0.0", + "https-proxy-agent": "^2.1.0", "ip": "^1.1.5", "js2xmlparser": "^3.0.0", "merge": "^1.2.0", From a214b66d29e0ccf358a76f51dbbd793d148b7a5d Mon Sep 17 00:00:00 2001 From: Piero Cena Date: Mon, 2 Oct 2017 09:55:14 +0200 Subject: [PATCH 03/12] resolved issue https://github.com/IoTKETI/Mobius/issues/7 --- mobius/responder.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobius/responder.js b/mobius/responder.js index d6d764fa..fb5e593d 100644 --- a/mobius/responder.js +++ b/mobius/responder.js @@ -802,7 +802,7 @@ function typeCheckAction(index1, body_Obj) { else if (index2 == 'cst' || index2 == 'los' || index2 == 'mt' || index2 == 'csy' || index2 == 'nct' || index2 == 'cs' || index2 == 'st' || index2 == 'ty' || index2 == 'cbs' || index2 == 'cni' || index2 == 'mni' || - index2 == 'cnm' || index2 == 'mia' || index2 == 'mbs' || index2 == 'cnf' || index2 == 'mgd' || index2 == 'btl' || index2 == 'bts' || + index2 == 'cnm' || index2 == 'mia' || index2 == 'mbs' || index2 == 'mgd' || index2 == 'btl' || index2 == 'bts' || index2 == 'mdn' || index2 == 'mdc' || index2 == 'mdt' || index2 == 'pei' || index2 == 'mnm') { if ((index1 == 'm2m:cin' || index1 == 'm2m:nod' || index1 == 'm2m:ae' || index1 == 'm2m:sub' || index1 == 'm2m:acp' || index1 == 'm2m:csr' || index1 == 'm2m:grp' From 5f4c83e7e71e93ad4e20ce057a0ed249f9473648 Mon Sep 17 00:00:00 2001 From: Piero Cena Date: Mon, 2 Oct 2017 13:53:58 +0200 Subject: [PATCH 04/12] uri starting with "/" in urilist (discovery) --- mobius/resource.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobius/resource.js b/mobius/resource.js index ef640d9f..476f0b0a 100644 --- a/mobius/resource.js +++ b/mobius/resource.js @@ -1358,7 +1358,7 @@ exports.retrieve = function(request, response, comm_Obj) { resource_Obj = {}; resource_Obj.uril = {}; resource_Obj.uril = ri_list; - make_cse_relative(ri_list); + //make_cse_relative(ri_list); // [TIM] path must begin with / responder.search_result(request, response, 200, resource_Obj, 2000, comm_Obj.ri, ''); } else if (request.query.rcn == 4 || request.query.rcn == 5 ||request.query.rcn == 6) { From 9db994a47a31c7a745d4cb490312e3e147418af4 Mon Sep 17 00:00:00 2001 From: Piero Cena Date: Mon, 2 Oct 2017 14:59:24 +0200 Subject: [PATCH 05/12] group edit issue resolved --- mobius/resource.js | 5 ++++- mobius/sql_action.js | 12 +++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/mobius/resource.js b/mobius/resource.js index 476f0b0a..57cdafdd 100644 --- a/mobius/resource.js +++ b/mobius/resource.js @@ -1602,9 +1602,12 @@ function update_action( request, response, ty, resource_Obj, callback) { }); } else if(ty == '9') { + // [TIM] + var macp = resource_Obj[rootnm].macp; + if (typeof macp == "object") macp = JSON.stringify(resource_Obj[rootnm].macp); db_sql.update_grp(resource_Obj[rootnm].lt, JSON.stringify(resource_Obj[rootnm].acpi), resource_Obj[rootnm].et, resource_Obj[rootnm].st, JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].mni, resource_Obj[rootnm].ri, - resource_Obj[rootnm].mnm, JSON.stringify(resource_Obj[rootnm].mid), JSON.stringify(resource_Obj[rootnm].macp), resource_Obj[rootnm].gn, function (err, results) { + resource_Obj[rootnm].mnm, JSON.stringify(resource_Obj[rootnm].mid), macp, resource_Obj[rootnm].gn, function (err, results) { if (!err) { callback('1', resource_Obj); } diff --git a/mobius/sql_action.js b/mobius/sql_action.js index 0ce2d66a..00671689 100644 --- a/mobius/sql_action.js +++ b/mobius/sql_action.js @@ -1231,17 +1231,19 @@ exports.update_grp = function (lt, acpi, et, st, lbl, at, aa, mni, ri, mnm, mid, lt, acpi, et, st, lbl, at, aa, mni, ri); db.getResult(sql1, '', function (err, results) { if (!err) { - var sql2 = util.format('update grp set mnm = \'%s\', mid = \'%s\', macp = \'%s\', gn = \'%s\' where ri = \'%s\'', - mnm, mid, macp, gn, ri); - db.getResult(sql2, '', function (err, results) { - if (!err) { + // [TIM] need escaping to avoid errors in DB + var sql2 = 'update grp set mnm = ?, mid = ?, macp = ?, gn = ? where ri = ?'; + var values = [mnm, mid, macp, gn, ri]; + db.getResultEsc(sql2, values, function (err, results) { + if(!err) { console.timeEnd('update_grp ' + ri); callback(err, results); } else { callback(err, results); } - }); + }); + } else { callback(err, results); From efc251bbc8f3af787933a95f6618363a2f721c4f Mon Sep 17 00:00:00 2001 From: Piero Cena Date: Wed, 4 Oct 2017 14:38:52 +0200 Subject: [PATCH 06/12] coap & mqtt authorization implemented --- app.js | 2 +- pxy_coap.js | 5 +++++ pxy_mqtt.js | 45 ++++++++++++++++++++++++++++----------------- 3 files changed, 34 insertions(+), 18 deletions(-) diff --git a/app.js b/app.js index 21eba6cc..6b181e9b 100644 --- a/app.js +++ b/app.js @@ -18,7 +18,7 @@ process.env.NODE_ENV = 'production'; //process.env.NODE_ENV = 'development'; require('./logger.js'); -logger.level = 'debug'; +logger.level = 'info'; var fs = require('fs'); var http = require('http'); diff --git a/pxy_coap.js b/pxy_coap.js index 3a9e3c3b..4c7f1fea 100644 --- a/pxy_coap.js +++ b/pxy_coap.js @@ -168,9 +168,14 @@ function coap_message_handler(request, response) { } else if (request.options[idx].name == '267') { // 'X-M2M-TY headers['X-M2M-TY'] = Buffer.isBuffer(request.options[idx].value) ? request.options[idx].value[0].toString() : request.options[idx].value.toString(); + } else if (request.options[idx].name == '271') { // Authorization [TIM] + headers['Authorization'] = Buffer.isBuffer(request.options[idx].value) ? request.options[idx].value.toString() : request.options[idx].value; + //console.log(">>>>>COAP.auth=",headers['Authorization'],request.options[idx]); } } } + + headers['user-agent'] = "proxy-coap"; // [TIM] if(request.headers['Accept']) { diff --git a/pxy_mqtt.js b/pxy_mqtt.js index 4fb82496..7935a837 100644 --- a/pxy_mqtt.js +++ b/pxy_mqtt.js @@ -312,6 +312,10 @@ function mqtt_message_handler(topic, message) { console.log('----> ' + topic); console.log(message.toString()); var topic_arr = topic.split("/"); + // [TIM] clean from ?auth query string + if(topic_arr[topic_arr.length-1].indexOf("?auth")!=-1) { + topic_arr[topic_arr.length-1] = topic_arr[topic_arr.length-1].split("?auth")[0]; + } if(topic_arr[5] != null) { var bodytype = (topic_arr[5] == 'xml') ? topic_arr[5] : ((topic_arr[5] == 'json') ? topic_arr[5] : ((topic_arr[5] == 'cbor') ? topic_arr[5] : 'json')); } @@ -382,7 +386,7 @@ function mqtt_message_handler(topic, message) { result['m2m:rqp'] = result; } - mqtt_message_action(pxymqtt_client, topic_arr, bodytype, result); + mqtt_message_action(pxymqtt_client, topic, topic_arr, bodytype, result); } else { var resp_topic = '/oneM2M/resp/'; @@ -400,7 +404,7 @@ function mqtt_message_handler(topic, message) { result['m2m:rqp'] = result; } if(rsc == '1') { - mqtt_message_action(pxymqtt_client, topic_arr, bodytype, result); + mqtt_message_action(pxymqtt_client, topic, topic_arr, bodytype, result); } else { var resp_topic = '/oneM2M/resp/'; @@ -417,7 +421,7 @@ function mqtt_message_handler(topic, message) { } } -function mqtt_message_action(mqtt_client, topic_arr, bodytype, jsonObj) { +function mqtt_message_action(mqtt_client, topic, topic_arr, bodytype, jsonObj) { if (jsonObj['m2m:rqp'] != null) { var op = (jsonObj['m2m:rqp'].op == null) ? '' : jsonObj['m2m:rqp'].op; var to = (jsonObj['m2m:rqp'].to == null) ? '' : jsonObj['m2m:rqp'].to; @@ -451,7 +455,13 @@ function mqtt_message_action(mqtt_client, topic_arr, bodytype, jsonObj) { resp_topic += (topic_arr[3] + '/' + topic_arr[4] + '/' + topic_arr[5]); if (to.split('/')[1].split('?')[0] == usecsebase) { - mqtt_binding(op, to, fr, rqi, ty, pc, bodytype, function (res, res_body) { + // [TIM] auth query string in topic + var auth = topic.split("?"); + if (auth.length==2) { + auth = auth[1].replace("auth=", ""); + //console.log(">>>>>MQTT.auth=",auth); + } else auth = null; + mqtt_binding(op, to, fr, rqi, ty, pc, bodytype, auth, function (res, res_body) { if (res_body == '') { res_body = '{}'; } @@ -484,7 +494,7 @@ function mqtt_message_action(mqtt_client, topic_arr, bodytype, jsonObj) { } } -function mqtt_binding(op, to, fr, rqi, ty, pc, bodytype, callback) { +function mqtt_binding(op, to, fr, rqi, ty, pc, bodytype, auth, callback) { var content_type = 'application/vnd.onem2m-res+json'; switch (op.toString()) { @@ -510,18 +520,24 @@ function mqtt_binding(op, to, fr, rqi, ty, pc, bodytype, callback) { var bodyStr = ''; + // {TIM] + var headers = { + 'X-M2M-RI': rqi, + 'Accept': 'application/json', + 'X-M2M-Origin': fr, + 'Content-Type': content_type + }; + if (auth) { + headers['Authorization'] = auth; + headers['user-agent'] = "proxy-mqtt"; // [TIM] + } if(usesecure == 'disable') { var options = { hostname: usemqttcbhost, port: usecsebaseport, path: to, method: op, - headers: { - 'X-M2M-RI': rqi, - 'Accept': 'application/json', - 'X-M2M-Origin': fr, - 'Content-Type': content_type - } + headers: headers }; var req = http.request(options, function (res) { @@ -542,12 +558,7 @@ function mqtt_binding(op, to, fr, rqi, ty, pc, bodytype, callback) { port: usecsebaseport, path: to, method: op, - headers: { - 'X-M2M-RI': rqi, - 'Accept': 'application/json', - 'X-M2M-Origin': fr, - 'Content-Type': content_type - }, + headers: headers, ca: fs.readFileSync('ca-crt.pem') }; From 4727284802f4d9645fb9401c486699b00ebed920 Mon Sep 17 00:00:00 2001 From: Piero Cena Date: Thu, 5 Oct 2017 15:50:39 +0200 Subject: [PATCH 07/12] websocket authorization implemented --- pxy_ws.js | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/pxy_ws.js b/pxy_ws.js index 291ddf0e..b0b079ca 100644 --- a/pxy_ws.js +++ b/pxy_ws.js @@ -113,11 +113,19 @@ exports.ws_watchdog = function() { console.log((new Date()) + ' Connection from origin ' + request.origin + ' rejected.'); return; } - + + //[TIM] retrieve auth query param from search string of request url + + if (request.resourceURL.search && request.resourceURL.search.indexOf("?auth")!=-1) { + var auth = request.resourceURL.search.replace("?auth=",""); + console.log(">>>>>WS.auth=",auth); + } else auth = null; + for (var index in request.requestedProtocols) { if(request.requestedProtocols.hasOwnProperty(index)) { if(request.requestedProtocols[index] === 'onem2m.r2.0.xml') { var connection = request.accept('onem2m.r2.0.xml', request.origin); + connection.auth = auth; console.log((new Date()) + ' Connection accepted. (xml)'); connection.on('message', ws_message_handler); connection.on('close', function (reasonCode, description) { @@ -127,6 +135,7 @@ exports.ws_watchdog = function() { } else if(request.requestedProtocols[index] === 'onem2m.r2.0.cbor') { var connection = request.accept('onem2m.r2.0.cbor', request.origin); + connection.auth = auth; console.log((new Date()) + ' Connection accepted. (cbor)'); connection.on('message', ws_message_handler); connection.on('close', function (reasonCode, description) { @@ -136,6 +145,7 @@ exports.ws_watchdog = function() { } else if(request.requestedProtocols[index] === 'onem2m.r2.0.json') { var connection = request.accept('onem2m.r2.0.json', request.origin); + connection.auth = auth; console.log((new Date()) + ' Connection accepted. (json)'); connection.on('message', ws_message_handler); connection.on('close', function (reasonCode, description) { @@ -363,7 +373,7 @@ function ws_message_action(connection, bodytype, jsonObj) { try { if (to.split('/')[1].split('?')[0] == usecsebase) { - ws_binding(op, to, fr, rqi, ty, pc, bodytype, function (res, res_body) { + ws_binding(op, to, fr, rqi, ty, pc, bodytype, connection.auth, function (res, res_body) { if (res_body == '') { res_body = '{}'; } @@ -386,7 +396,7 @@ function ws_message_action(connection, bodytype, jsonObj) { } } -function ws_binding(op, to, fr, rqi, ty, pc, bodytype, callback) { +function ws_binding(op, to, fr, rqi, ty, pc, bodytype, auth, callback) { var content_type = 'application/vnd.onem2m-res+json'; switch (op.toString()) { @@ -411,6 +421,18 @@ function ws_binding(op, to, fr, rqi, ty, pc, bodytype, callback) { } var bodyStr = ''; + + // [TIM] authorization headers + var headers = { + 'X-M2M-RI': rqi, + 'Accept': 'application/json', + 'X-M2M-Origin': fr, + 'Content-Type': content_type + }; + if (auth) { + headers['Authorization'] = auth; + headers['user-agent'] = "proxy-ws"; // [TIM] + } if(usesecure == 'disable') { var options = { @@ -418,12 +440,7 @@ function ws_binding(op, to, fr, rqi, ty, pc, bodytype, callback) { port: usecsebaseport, path: to, method: op, - headers: { - 'X-M2M-RI': rqi, - 'Accept': 'application/json', - 'X-M2M-Origin': fr, - 'Content-Type': content_type - } + headers: headers }; var req = http.request(options, function (res) { @@ -444,12 +461,7 @@ function ws_binding(op, to, fr, rqi, ty, pc, bodytype, callback) { port: usecsebaseport, path: to, method: op, - headers: { - 'X-M2M-RI': rqi, - 'Accept': 'application/json', - 'X-M2M-Origin': fr, - 'Content-Type': content_type - }, + headers: headers, ca: fs.readFileSync('ca-crt.pem') }; From 5f1d5e42352c62a786278bfd3617625856f3d72f Mon Sep 17 00:00:00 2001 From: Piero Cena Date: Tue, 17 Oct 2017 12:01:31 +0200 Subject: [PATCH 08/12] preliminary sql statements --- mobius/mobiusdb_pre.sql | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/mobius/mobiusdb_pre.sql b/mobius/mobiusdb_pre.sql index 923d4a70..6d2f2647 100644 --- a/mobius/mobiusdb_pre.sql +++ b/mobius/mobiusdb_pre.sql @@ -1,14 +1,5 @@ -subscribe resp_topic as /oneM2M/# -mqtt_message sent: /oneM2M/req/nbiot_cons/onem2m_e65baa96/json -{ 'm2m:rqp': - { op: '2', - to: '/onem2m/nbiot', - fr: 'nbiot_cons', - rqi: 12345, - pc: '' } } -mqtt_message received: - >topic: /oneM2M/req/nbiot_cons/onem2m_e65baa96/json - >msg: {"m2m:rqp":{"op":"2","to":"/onem2m/nbiot","fr":"nbiot_cons","rqi":12345,"pc":""}} -mqtt_message received: - >topic: /oneM2M/resp/nbiot_cons/onem2m_e65baa96/json - >msg: {"m2m:rsp":{"rsc":2000,"rqi":12345,"pc":{"m2m:ae":{"pi":"Sy2XMSpbb","ty":2,"ct":"20170706T085259","ri":"r1NX_cOiVZ","rn":"nbiot","lt":"20170706T085259","et":"20270706T085259","acpi":["/onem2m/acp_nbiot"],"aei":"nbiot_prod","rr":true}}}} \ No newline at end of file +CREATE DATABASE 'mobiusdb'; + +CREATE USER 'mobius' IDENTIFIED BY 'mobius'; +CREATE USER 'mobius'@'localhost' IDENTIFIED BY 'mobius'; +CREATE USER 'mobius'@'%' IDENTIFIED BY 'mobius'; \ No newline at end of file From c662c0d5e86b72c0a430fce4a84293f4081539ab Mon Sep 17 00:00:00 2001 From: Piero Cena Date: Tue, 17 Oct 2017 12:03:51 +0200 Subject: [PATCH 09/12] preliminary sql statements --- mobius/mobiusdb_pre.sql | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/mobius/mobiusdb_pre.sql b/mobius/mobiusdb_pre.sql index 923d4a70..95cd7381 100644 --- a/mobius/mobiusdb_pre.sql +++ b/mobius/mobiusdb_pre.sql @@ -1,14 +1,5 @@ -subscribe resp_topic as /oneM2M/# -mqtt_message sent: /oneM2M/req/nbiot_cons/onem2m_e65baa96/json -{ 'm2m:rqp': - { op: '2', - to: '/onem2m/nbiot', - fr: 'nbiot_cons', - rqi: 12345, - pc: '' } } -mqtt_message received: - >topic: /oneM2M/req/nbiot_cons/onem2m_e65baa96/json - >msg: {"m2m:rqp":{"op":"2","to":"/onem2m/nbiot","fr":"nbiot_cons","rqi":12345,"pc":""}} -mqtt_message received: - >topic: /oneM2M/resp/nbiot_cons/onem2m_e65baa96/json - >msg: {"m2m:rsp":{"rsc":2000,"rqi":12345,"pc":{"m2m:ae":{"pi":"Sy2XMSpbb","ty":2,"ct":"20170706T085259","ri":"r1NX_cOiVZ","rn":"nbiot","lt":"20170706T085259","et":"20270706T085259","acpi":["/onem2m/acp_nbiot"],"aei":"nbiot_prod","rr":true}}}} \ No newline at end of file +CREATE DATABASE mobiusdb; + +CREATE USER 'mobius' IDENTIFIED BY 'mobius'; +CREATE USER 'mobius'@'localhost' IDENTIFIED BY 'mobius'; +CREATE USER 'mobius'@'%' IDENTIFIED BY 'mobius'; \ No newline at end of file From 93410e1a9ff26ee6163a7995df6ea20d34c4eaf0 Mon Sep 17 00:00:00 2001 From: Piero Cena Date: Tue, 17 Oct 2017 12:16:51 +0200 Subject: [PATCH 10/12] added grant to user --- mobius/mobiusdb_pre.sql | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mobius/mobiusdb_pre.sql b/mobius/mobiusdb_pre.sql index 95cd7381..2ed1d155 100644 --- a/mobius/mobiusdb_pre.sql +++ b/mobius/mobiusdb_pre.sql @@ -2,4 +2,6 @@ CREATE DATABASE mobiusdb; CREATE USER 'mobius' IDENTIFIED BY 'mobius'; CREATE USER 'mobius'@'localhost' IDENTIFIED BY 'mobius'; -CREATE USER 'mobius'@'%' IDENTIFIED BY 'mobius'; \ No newline at end of file +CREATE USER 'mobius'@'%' IDENTIFIED BY 'mobius'; + +GRANT ALL PRIVILEGES ON mobiusdb.* TO mobius; \ No newline at end of file From e147e7270e3262e6216202d88bc63b968f01f6fb Mon Sep 17 00:00:00 2001 From: Piero Cena Date: Wed, 18 Oct 2017 12:03:13 +0200 Subject: [PATCH 11/12] deleted cnf field except for CIN resource --- mobius/cb.js | 3 +- mobius/mobiusdb.sql | 1 - mobius/resource.js | 38 ++++++++++----------- mobius/sql_action.js | 80 ++++++++++++++++++++++---------------------- 4 files changed, 60 insertions(+), 62 deletions(-) diff --git a/mobius/cb.js b/mobius/cb.js index e211113d..d48802c5 100644 --- a/mobius/cb.js +++ b/mobius/cb.js @@ -73,7 +73,6 @@ function parse_create_action(callback) { resource_Obj[rootnm].cst = '1'; resource_Obj[rootnm].mni = '3153600000'; resource_Obj[rootnm].cs = ''; - resource_Obj[rootnm].cnf = ''; db_sql.select_ri_lookup(resource_Obj[rootnm].ri, function (err, results_ri) { if(!err) { @@ -101,7 +100,7 @@ function parse_create_action(callback) { resource_Obj[rootnm].sri = require('shortid').generate(); db_sql.insert_cb(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].cst, resource_Obj[rootnm].csi, JSON.stringify(resource_Obj[rootnm].srt), JSON.stringify(resource_Obj[rootnm].poa), + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].cst, resource_Obj[rootnm].csi, JSON.stringify(resource_Obj[rootnm].srt), JSON.stringify(resource_Obj[rootnm].poa), resource_Obj[rootnm].nl, resource_Obj[rootnm].ncp, function (err, results) { if (!err) { rspObj.rsc = '2001'; diff --git a/mobius/mobiusdb.sql b/mobius/mobiusdb.sql index 5057ae33..e562bc9c 100644 --- a/mobius/mobiusdb.sql +++ b/mobius/mobiusdb.sql @@ -212,7 +212,6 @@ CREATE TABLE `lookup` ( `st` varchar(45) DEFAULT NULL, `mni` varchar(45) DEFAULT NULL, `cs` varchar(45) DEFAULT NULL, - `cnf` varchar(45) DEFAULT NULL, `sri` varchar(45) DEFAULT NULL, `spi` varchar(45) DEFAULT NULL, PRIMARY KEY (`pi`,`ty`,`ct`,`ri`), diff --git a/mobius/resource.js b/mobius/resource.js index 110e98f7..b326381c 100644 --- a/mobius/resource.js +++ b/mobius/resource.js @@ -343,7 +343,7 @@ function create_action(request, response, ty, resource_Obj, callback) { if (ty == '1') { db_sql.insert_acp(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, JSON.stringify(resource_Obj[rootnm].pv), JSON.stringify(resource_Obj[rootnm].pvs), function (err, results) { if (!err) { callback('1', resource_Obj); @@ -368,7 +368,7 @@ function create_action(request, response, ty, resource_Obj, callback) { resource_Obj[rootnm].sri = resource_Obj[rootnm].aei; db_sql.insert_ae(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].apn, resource_Obj[rootnm].api, resource_Obj[rootnm].aei, JSON.stringify(resource_Obj[rootnm].poa), resource_Obj[rootnm].or, resource_Obj[rootnm].nl, resource_Obj[rootnm].rr, function (err, results) { if (!err) { @@ -393,7 +393,7 @@ function create_action(request, response, ty, resource_Obj, callback) { else if (ty == '3') { db_sql.insert_cnt(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].cr, resource_Obj[rootnm].mbs, resource_Obj[rootnm].mia, resource_Obj[rootnm].cni, resource_Obj[rootnm].cbs, resource_Obj[rootnm].li, resource_Obj[rootnm].or, function (err, results) { if (!err) { @@ -446,7 +446,7 @@ function create_action(request, response, ty, resource_Obj, callback) { else if (ty == '9') { db_sql.insert_grp(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].cr, resource_Obj[rootnm].mt, resource_Obj[rootnm].cnm, resource_Obj[rootnm].mnm, JSON.stringify(resource_Obj[rootnm].mid), JSON.stringify(resource_Obj[rootnm].macp), resource_Obj[rootnm].mtv, resource_Obj[rootnm].csy, resource_Obj[rootnm].gn, function (err, results) { if (!err) { @@ -471,7 +471,7 @@ function create_action(request, response, ty, resource_Obj, callback) { else if (ty == '10') { db_sql.insert_lcp(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].los, resource_Obj[rootnm].lou, resource_Obj[rootnm].lot, resource_Obj[rootnm].lor, resource_Obj[rootnm].loi, resource_Obj[rootnm].lon, resource_Obj[rootnm].lost, function (err, results) { if (!err) { @@ -497,7 +497,7 @@ function create_action(request, response, ty, resource_Obj, callback) { if(resource_Obj[rootnm].mgd == 1001) { db_sql.insert_fwr(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].mgd, resource_Obj[rootnm].objs, resource_Obj[rootnm].obps, resource_Obj[rootnm].dc, resource_Obj[rootnm].vr, resource_Obj[rootnm].fwnnam, resource_Obj[rootnm].url, resource_Obj[rootnm].ud, JSON.stringify(resource_Obj[rootnm].uds), function (err, results) { if (!err) { @@ -522,7 +522,7 @@ function create_action(request, response, ty, resource_Obj, callback) { else if(resource_Obj[rootnm].mgd == 1006) { db_sql.insert_bat(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].mgd, resource_Obj[rootnm].objs, resource_Obj[rootnm].obps, resource_Obj[rootnm].dc, resource_Obj[rootnm].btl, resource_Obj[rootnm].bts, function (err, results) { if (!err) { @@ -547,7 +547,7 @@ function create_action(request, response, ty, resource_Obj, callback) { else if(resource_Obj[rootnm].mgd == 1007) { db_sql.insert_dvi(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].mgd, resource_Obj[rootnm].objs, resource_Obj[rootnm].obps, resource_Obj[rootnm].dc, resource_Obj[rootnm].dbl, resource_Obj[rootnm].man, resource_Obj[rootnm].mod, resource_Obj[rootnm].dty, resource_Obj[rootnm].fwv, resource_Obj[rootnm].swv, resource_Obj[rootnm].hwv, function (err, results) { if (!err) { @@ -572,7 +572,7 @@ function create_action(request, response, ty, resource_Obj, callback) { else if(resource_Obj[rootnm].mgd == 1008) { db_sql.insert_dvc(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].mgd, resource_Obj[rootnm].objs, resource_Obj[rootnm].obps, resource_Obj[rootnm].dc, resource_Obj[rootnm].can, resource_Obj[rootnm].att, JSON.stringify(resource_Obj[rootnm].cas), resource_Obj[rootnm].cus, resource_Obj[rootnm].ena, resource_Obj[rootnm].dis, function (err, results) { if (!err) { @@ -597,7 +597,7 @@ function create_action(request, response, ty, resource_Obj, callback) { else if(resource_Obj[rootnm].mgd == 1009) { db_sql.insert_rbo(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].mgd, resource_Obj[rootnm].objs, resource_Obj[rootnm].obps, resource_Obj[rootnm].dc, resource_Obj[rootnm].rbo, resource_Obj[rootnm].far, function (err, results) { if (!err) { @@ -628,7 +628,7 @@ function create_action(request, response, ty, resource_Obj, callback) { else if (ty == '14') { db_sql.insert_nod(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].ni, resource_Obj[rootnm].hcl, function (err, results) { if (!err) { callback('1', resource_Obj); @@ -652,7 +652,7 @@ function create_action(request, response, ty, resource_Obj, callback) { else if (ty == '16') { db_sql.insert_csr(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].cst, JSON.stringify(resource_Obj[rootnm].poa), resource_Obj[rootnm].cb, resource_Obj[rootnm].csi, resource_Obj[rootnm].mei, resource_Obj[rootnm].tri, resource_Obj[rootnm].rr, resource_Obj[rootnm].nl, function (err, results) { if (!err) { @@ -677,7 +677,7 @@ function create_action(request, response, ty, resource_Obj, callback) { else if (ty == '17') { db_sql.insert_req(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].op, resource_Obj[rootnm].tg, resource_Obj[rootnm].org, resource_Obj[rootnm].rid, resource_Obj[rootnm].mi, resource_Obj[rootnm].pc, resource_Obj[rootnm].rs, resource_Obj[rootnm].ors, function (err, results) { if (!err) { @@ -702,7 +702,7 @@ function create_action(request, response, ty, resource_Obj, callback) { else if (ty == '23') { db_sql.insert_sub(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, JSON.stringify(resource_Obj[rootnm].enc), resource_Obj[rootnm].exc, JSON.stringify(resource_Obj[rootnm].nu), resource_Obj[rootnm].gpi, resource_Obj[rootnm].nfu, JSON.stringify(resource_Obj[rootnm].bn), resource_Obj[rootnm].rl, resource_Obj[rootnm].psn, resource_Obj[rootnm].pn, resource_Obj[rootnm].nsp, resource_Obj[rootnm].ln, resource_Obj[rootnm].nct, resource_Obj[rootnm].nec, @@ -729,7 +729,7 @@ function create_action(request, response, ty, resource_Obj, callback) { else if (ty == '24') { db_sql.insert_smd(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].cr, resource_Obj[rootnm].dsp, resource_Obj[rootnm].dcrp, resource_Obj[rootnm].soe, JSON.stringify(resource_Obj[rootnm].rels), resource_Obj[rootnm].or, function (err, results) { if (!err) { callback('1', resource_Obj); @@ -753,7 +753,7 @@ function create_action(request, response, ty, resource_Obj, callback) { else if (ty == '29') { db_sql.insert_ts(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].cr, resource_Obj[rootnm].mbs, resource_Obj[rootnm].mia, resource_Obj[rootnm].cni, resource_Obj[rootnm].cbs, resource_Obj[rootnm].or, resource_Obj[rootnm].pei, resource_Obj[rootnm].mdd, resource_Obj[rootnm].mdn, resource_Obj[rootnm].mdl, resource_Obj[rootnm].mdc, resource_Obj[rootnm].mdt, function (err, results) { @@ -781,7 +781,7 @@ function create_action(request, response, ty, resource_Obj, callback) { else if (ty == '30') { db_sql.insert_tsi(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].dgt, resource_Obj[rootnm].con, resource_Obj[rootnm].sqn, function (err, results) { if (!err) { create_action_cni(resource_Obj[rootnm].ri, resource_Obj[rootnm].ty, resource_Obj[rootnm].pi, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, function (rsc, st) { @@ -809,7 +809,7 @@ function create_action(request, response, ty, resource_Obj, callback) { else if (ty == '27') { db_sql.insert_mms(resource_Obj[rootnm].ty, resource_Obj[rootnm].ri, resource_Obj[rootnm].rn, resource_Obj[rootnm].pi, resource_Obj[rootnm].ct, resource_Obj[rootnm].lt, resource_Obj[rootnm].et, JSON.stringify(resource_Obj[rootnm].acpi), JSON.stringify(resource_Obj[rootnm].lbl), JSON.stringify(resource_Obj[rootnm].at), - JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].cnf, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, + JSON.stringify(resource_Obj[rootnm].aa), resource_Obj[rootnm].st, resource_Obj[rootnm].mni, resource_Obj[rootnm].cs, resource_Obj[rootnm].sri, resource_Obj[rootnm].spi, resource_Obj[rootnm].sid, resource_Obj[rootnm].soid, resource_Obj[rootnm].stid, resource_Obj[rootnm].asd, resource_Obj[rootnm].osd, resource_Obj[rootnm].sst, function (err, results) { if (!err) { @@ -887,7 +887,7 @@ function build_resource(request, response, ty, body_Obj, callback) { resource_Obj[rootnm].mni = '3153600000'; resource_Obj[rootnm].cs = ''; - resource_Obj[rootnm].cnf = ''; + //resource_Obj[rootnm].cnf = ''; if(ty == '3' || ty == '29') { resource_Obj[rootnm].mni = '3153600000'; diff --git a/mobius/sql_action.js b/mobius/sql_action.js index 4f01356e..12f3a30f 100644 --- a/mobius/sql_action.js +++ b/mobius/sql_action.js @@ -42,7 +42,7 @@ function set_sri_sri(ri, sri, callback) { }); } -exports.insert_lookup = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, callback) { +exports.insert_lookup = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, callback) { console.time('insert_lookup ' + ri); var sql = util.format('insert into lookup (' + 'ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi) ' + @@ -58,9 +58,9 @@ exports.insert_lookup = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, }); }; -exports.insert_cb = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, cst, csi, srt, poa, nl, ncp, callback) { +exports.insert_cb = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, cst, csi, srt, poa, nl, ncp, callback) { console.time('insert_cb ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into cb (' + 'ri, cst, csi, srt, poa, nl, ncp) ' + @@ -86,9 +86,9 @@ exports.insert_cb = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_acp = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, pv, pvs, callback) { +exports.insert_acp = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, pv, pvs, callback) { console.time('insert_acp ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into acp (ri, pv, pvs) ' + 'value (\'%s\', \'%s\', \'%s\')', @@ -112,9 +112,9 @@ exports.insert_acp = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_ae = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, apn, api, aei, poa, or, nl, rr, callback) { +exports.insert_ae = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, apn, api, aei, poa, or, nl, rr, callback) { console.time('insert_ae ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into ae (ri, apn, api, aei, poa, ae.or, nl, rr) ' + 'value (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', @@ -142,9 +142,9 @@ exports.insert_ae = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_cnt = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, cr, mbs, mia, cni, cbs, li, or, callback) { +exports.insert_cnt = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, cr, mbs, mia, cni, cbs, li, or, callback) { console.time('insert_cnt ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into cnt (ri, cr, mni, mbs, mia, cni, cbs, li, cnt.or) ' + 'value (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', @@ -178,7 +178,7 @@ global.getType = function (p) { exports.insert_cin = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, cr, or, con, callback) { console.time('insert_cin ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var con_type = getType(con); // [TIM] fields escape is necessary for "content" field if containing special chars @@ -205,9 +205,9 @@ exports.insert_cin = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_grp = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, cr, mt, cnm, mnm, mid, macp, mtv, csy, gn, callback) { +exports.insert_grp = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, cr, mt, cnm, mnm, mid, macp, mtv, csy, gn, callback) { console.time('insert_grp ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into grp (ri, cr, mt, cnm, mnm, mid, macp, mtv, csy, gn) ' + 'value (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', @@ -232,9 +232,9 @@ exports.insert_grp = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_lcp = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, los, lou, lot, lor, loi, lon, lost, callback) { +exports.insert_lcp = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, los, lou, lot, lor, loi, lon, lost, callback) { console.time('insert_lcp ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into lcp (ri, los, lou, lot, lor, loi, lon, lost) ' + 'value (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', @@ -259,9 +259,9 @@ exports.insert_lcp = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_fwr = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, mgd, objs, obps, dc, vr, fwnnam, url, ud, uds, callback) { +exports.insert_fwr = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, mgd, objs, obps, dc, vr, fwnnam, url, ud, uds, callback) { console.time('insert_fwr ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into mgo (ri, mgd, objs, obps, dc, vr, fwnnam, url, ud, uds) ' + 'value (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', @@ -285,9 +285,9 @@ exports.insert_fwr = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_bat = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, mgd, objs, obps, dc, btl, bts, callback) { +exports.insert_bat = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, mgd, objs, obps, dc, btl, bts, callback) { console.time('insert_bat ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into mgo (ri, mgd, objs, obps, dc, btl, bts) ' + 'value (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', @@ -311,9 +311,9 @@ exports.insert_bat = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_dvi = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, mgd, objs, obps, dc, dbl, man, mod, dty, fwv, swv, hwv, callback) { +exports.insert_dvi = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, mgd, objs, obps, dc, dbl, man, mod, dty, fwv, swv, hwv, callback) { console.time('insert_dvi ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into mgo (ri, mgd, objs, obps, dc, dbl, man, mgo.mod, dty, fwv, swv, hwv) ' + 'value (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', @@ -337,9 +337,9 @@ exports.insert_dvi = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_dvc = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, mgd, objs, obps, dc, can, att, cas, cus, ena, dis, callback) { +exports.insert_dvc = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, mgd, objs, obps, dc, can, att, cas, cus, ena, dis, callback) { console.time('insert_dvc ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into mgo (ri, mgd, objs, obps, dc, can, att, cas, cus, ena, dis) ' + 'value (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', @@ -363,9 +363,9 @@ exports.insert_dvc = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_rbo = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, mgd, objs, obps, dc, rbo, far, callback) { +exports.insert_rbo = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, mgd, objs, obps, dc, rbo, far, callback) { console.time('insert_rbo ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into mgo (ri, mgd, objs, obps, dc, rbo, far) ' + 'value (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', @@ -389,9 +389,9 @@ exports.insert_rbo = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_nod = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, ni, hcl, callback) { +exports.insert_nod = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, ni, hcl, callback) { console.time('insert_nod ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into nod (ri, ni, hcl) ' + 'value (\'%s\', \'%s\', \'%s\')', @@ -415,9 +415,9 @@ exports.insert_nod = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_csr = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, cst, poa, cb, csi, mei, tri, rr, nl, callback) { +exports.insert_csr = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, cst, poa, cb, csi, mei, tri, rr, nl, callback) { console.time('insert_csr ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into csr (ri, cst, poa, cb, csi, mei, tri, rr, nl) ' + 'value (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', @@ -442,9 +442,9 @@ exports.insert_csr = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_req = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, op, tg, org, rid, mi, pc, rs, ors, callback) { +exports.insert_req = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, op, tg, org, rid, mi, pc, rs, ors, callback) { console.time('insert_req ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into req (ri, op, tg, org, rid, mi, pc, rs, ors) ' + 'value (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', @@ -468,9 +468,9 @@ exports.insert_req = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_sub = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, enc, exc, nu, gpi, nfu, bn, rl, psn, pn, nsp, ln, nct, nec, cr, su, callback) { +exports.insert_sub = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, enc, exc, nu, gpi, nfu, bn, rl, psn, pn, nsp, ln, nct, nec, cr, su, callback) { console.time('insert_sub ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into sub (ri, pi, enc, exc, nu, gpi, nfu, bn, rl, psn, pn, nsp, ln, nct, nec, cr, su) ' + 'value (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', @@ -497,9 +497,9 @@ exports.insert_sub = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_smd = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, cr, dsp, dcrp, soe, rels, or, callback) { +exports.insert_smd = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, cr, dsp, dcrp, soe, rels, or, callback) { console.time('insert_smd ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into smd (ri, cr, dsp, dcrp, soe, rels, smd.or) ' + 'value (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', @@ -523,9 +523,9 @@ exports.insert_smd = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_ts = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, cr, mbs, mia, cni, cbs, or, pei, mdd, mdn, mdl, mdc, mdt, callback) { +exports.insert_ts = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, cr, mbs, mia, cni, cbs, or, pei, mdd, mdn, mdl, mdc, mdt, callback) { console.time('insert_ts ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into ts (ri, cr, mni, mbs, mia, cni, cbs, ts.or, pei, mdd, mdn, mdl, mdc, mdt) ' + 'value (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', ' + @@ -552,9 +552,9 @@ exports.insert_ts = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_tsi = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, dgt, con, sqn, callback) { +exports.insert_tsi = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, dgt, con, sqn, callback) { console.time('insert_tsi ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into tsi (ri, dgt, con, sqn) ' + 'value (\'%s\', \'%s\', \'%s\', \'%s\')', @@ -578,9 +578,9 @@ exports.insert_tsi = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, }); }; -exports.insert_mms = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, sid, soid, stid, asd, osd, sst, callback) { +exports.insert_mms = function(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, sid, soid, stid, asd, osd, sst, callback) { console.time('insert_mms ' + ri); - _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, cnf, sri, spi, function (err, results) { + _this.insert_lookup(ty, ri, rn, pi, ct, lt, et, acpi, lbl, at, aa, st, mni, cs, sri, spi, function (err, results) { if(!err) { var sql = util.format('insert into mms (ri, sid, soid, stid, asd, osd, sst) ' + 'value (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')', From 5f1a36d1d8606e115abf108cb33ac4fada346cc1 Mon Sep 17 00:00:00 2001 From: Piero Cena Date: Wed, 18 Oct 2017 15:40:55 +0200 Subject: [PATCH 12/12] - database name from conf.json - issue corrected on auth.js - removed comments --- app.js | 6 +++--- auth.js | 2 +- mobius/db_action.js | 4 ++-- mobius/resource.js | 5 +---- mobius/sql_action.js | 4 ++-- 5 files changed, 9 insertions(+), 12 deletions(-) diff --git a/app.js b/app.js index 0dfc2bc9..e036aeec 100644 --- a/app.js +++ b/app.js @@ -120,7 +120,7 @@ if (use_clustering) { cluster.fork(); }); - db.connect(usedbhost, 3306, usedbuser, usedbpass, function (rsc) { + db.connect(usedbhost, 3306, usedbname, usedbuser, usedbpass, function (rsc) { if (rsc == '1') { cb.create(function (rsp) { console.log(JSON.stringify(rsp)); @@ -152,7 +152,7 @@ if (use_clustering) { // app.use(bodyParser.text({limit: '1mb', type: 'application/*+xml' })); - db.connect(usedbhost, 3306, usedbuser, usedbpass, function (rsc) { + db.connect(usedbhost, 3306, usedbname, usedbuser, usedbpass, function (rsc) { if (rsc == '1') { if(usesecure === 'disable') { http.globalAgent.maxSockets = 1000000; @@ -182,7 +182,7 @@ if (use_clustering) { } } else { - db.connect(usedbhost, 3306, usedbuser, usedbpass, function (rsc) { + db.connect(usedbhost, 3306, usedbname, usedbuser, usedbpass, function (rsc) { if (rsc == '1') { cb.create(function (rsp) { console.log(JSON.stringify(rsp)); diff --git a/auth.js b/auth.js index 573dee5e..403adffb 100644 --- a/auth.js +++ b/auth.js @@ -75,7 +75,7 @@ function check_head_auth(request, response, callback) { logger.log("debug",'>>>>>>>user2: ',user_Obj,"url:",request.url); // ok user present if (user_Obj[0].role=="tenant") { - if (user_Obj[0].context.indexOf(context)!=-1) { + if (user_Obj[0].context.indexOf(context)!=-1 && context) { // ok, context enabled fot this user callback('1'); return '1'; diff --git a/mobius/db_action.js b/mobius/db_action.js index 80ab1294..1d45fa70 100644 --- a/mobius/db_action.js +++ b/mobius/db_action.js @@ -19,13 +19,13 @@ var mysql_pool = null; //var _this = this; -exports.connect = function (host, port, user, password, callback) { +exports.connect = function (host, port, database, user, password, callback) { mysql_pool = mysql.createPool({ host: host, port: port, user: user, password: password, - database: 'mobiusdb', + database: database, connectionLimit: 100, waitForConnections: true, debug: false, diff --git a/mobius/resource.js b/mobius/resource.js index b326381c..740b83cc 100644 --- a/mobius/resource.js +++ b/mobius/resource.js @@ -1373,10 +1373,7 @@ exports.retrieve = function(request, response, comm_Obj) { if (rsc == '1') { strObj += '}'; resource_Obj = JSON.parse(strObj); - - console.log("retrieve - rcn:",ri_list, resource_Obj) - - + //console.log("retrieve - rcn:",ri_list, resource_Obj) for (var index in resource_Obj) { if (resource_Obj.hasOwnProperty(index)) { resource_Obj[index] = merge(resource_Obj[index], search_Obj[index]); diff --git a/mobius/sql_action.js b/mobius/sql_action.js index 12f3a30f..f9578306 100644 --- a/mobius/sql_action.js +++ b/mobius/sql_action.js @@ -1073,7 +1073,7 @@ exports.select_in_ri_list = function (tbl, ri_list, ri_index, found_Obj, loop_cn if(loop_cnt == 0) { tid = require('shortid').generate(); - console.time('select_in_ri_list (' + tid + ')'); + // [TIM] console.time('select_in_ri_list (' + tid + ')'); } for(var idx = 0; idx < 8; idx++) { @@ -1093,7 +1093,7 @@ exports.select_in_ri_list = function (tbl, ri_list, ri_index, found_Obj, loop_cn } if(ri_index >= ri_list.length) { - console.timeEnd('select_in_ri_list (' + tid + ')'); + // [TIM] console.timeEnd('select_in_ri_list (' + tid + ')'); callback(err, found_Obj); } else {