Sanitization for number values such as RSSI and CINR

This commit is contained in:
Zaid Abdulla committed 2012-11-01 23:36:15 +03:00
1 parent 52aa4696d7
commit a4b30357e7
2 files changed
+28 -5

No files matched your search

+9 -5
View File
@@ -7,6 +7,7 @@ tr069 = require './tr-069'
tasks = require './tasks' tasks = require './tasks'
Memcached = require 'memcached' Memcached = require 'memcached'
memcached = new Memcached(config.MEMCACHED_SOCKET) memcached = new Memcached(config.MEMCACHED_SOCKET)
sanitize = require('./sanitize').sanitize
# Create MongoDB connections # Create MongoDB connections
@@ -34,10 +35,13 @@ updateDevice = (deviceId, actions, callback) ->
updates = {} updates = {}
if actions.parameterValues? if actions.parameterValues?
for p in actions.parameterValues for p in actions.parameterValues
if common.endsWith(p[0], '.') v = sanitize(p[0], p[1])
updates["#{p[0]}_value"] = p[1] path = if common.endsWith(p[0], '.') then p[0] else "#{p[0]}."
if v is undefined
updates["#{path}_value"] = p[1]
else else
updates["#{p[0]}._value"] = p[1] updates["#{path}_value"] = v
updates["#{path}_orig"] = p[1]
if actions.parameterNames? if actions.parameterNames?
for p in actions.parameterNames for p in actions.parameterNames
@@ -77,7 +81,7 @@ runTask = (sessionId, deviceId, task, reqParams, response) ->
nextTask = (sessionId, deviceId, response, cookies) -> nextTask = (sessionId, deviceId, response, cookies) ->
cur = tasksCollection.find({'device' : deviceId, 'status' : 0}).sort(['timestamp']).limit(1) cur = tasksCollection.find({'device' : deviceId}).sort(['timestamp']).limit(1)
cur.nextObject( (err, task) -> cur.nextObject( (err, task) ->
reqParams = {} reqParams = {}
resParams = {} resParams = {}
@@ -133,7 +137,7 @@ else
devicesCollection.count({'_id' : deviceId}, (err, count) -> devicesCollection.count({'_id' : deviceId}, (err, count) ->
if not count if not count
util.log("#{deviceId}: new device detected") util.log("#{deviceId}: new device detected")
task = {device : deviceId, name : 'init', timestamp : mongo.Timestamp(), status: 0} task = {device : deviceId, name : 'init', timestamp : mongo.Timestamp()}
tasksCollection.save(task, (err) -> tasksCollection.save(task, (err) ->
util.log("#{deviceId}: Added init task #{task._id}") util.log("#{deviceId}: Added init task #{task._id}")
) )
+19
View File
@@ -0,0 +1,19 @@
FLOAT_REGEX = /^([\-\+]?[0-9\.]+)/
extractFloat = (numStr) ->
res = FLOAT_REGEX.exec(numStr)
if res != null
parseFloat(res[1])
else
null
exports.sanitize = (path, value) ->
switch path
when 'InternetGatewayDevice.WiMAX.Status.RSSI'
extractFloat(value)
when 'InternetGatewayDevice.WiMAX.Status.CINR1'
extractFloat(value)
when 'InternetGatewayDevice.WiMAX.Status.CINR2'
extractFloat(value)
else
undefined