From 4add20fe823fee55b573c982b50dfa8deaee2097 Mon Sep 17 00:00:00 2001 From: Zaid Abdulla Date: Fri, 25 Jul 2014 22:33:12 +0300 Subject: [PATCH] Support for TR-181 data model when looking for ConnectionRequestURL and SoftwareVersion parameters. --- lib/api-functions.coffee | 14 ++++++++++++-- lib/presets.coffee | 6 +++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/api-functions.coffee b/lib/api-functions.coffee index 3548d77..d210f3e 100644 --- a/lib/api-functions.coffee +++ b/lib/api-functions.coffee @@ -90,11 +90,21 @@ connectionRequest = (deviceId, callback) -> ) ) - db.devicesCollection.findOne({_id : deviceId}, {'InternetGatewayDevice.ManagementServer.ConnectionRequestURL._value' : 1}, (err, device)-> + proj = { + 'Device.ManagementServer.ConnectionRequestURL._value' : 1, + 'InternetGatewayDevice.ManagementServer.ConnectionRequestURL._value' : 1 + } + + db.devicesCollection.findOne({_id : deviceId}, proj, (err, device)-> if err callback(err) return - connectionRequestUrl = device.InternetGatewayDevice.ManagementServer.ConnectionRequestURL._value + + if device.Device? # TR-181 data model + connectionRequestUrl = device.Device.ManagementServer.ConnectionRequestURL._value + else # TR-098 data model + connectionRequestUrl = device.InternetGatewayDevice.ManagementServer.ConnectionRequestURL._value + # for testing #connectionRequestUrl = connectionRequestUrl.replace(/^(http:\/\/)([0-9\.]+)(\:[0-9]+\/[a-zA-Z0-9]+\/?$)/, '$110.1.1.254$3') conReq(connectionRequestUrl, null, (statusCode, authHeader) -> diff --git a/lib/presets.coffee b/lib/presets.coffee index 8acafe7..52e0acc 100644 --- a/lib/presets.coffee +++ b/lib/presets.coffee @@ -84,6 +84,7 @@ exports.getDevicePreset = (deviceId, presets, objects, aliases, callback) -> if commandfile of deviceCustomCommands projection["_customCommands.#{c.command.split(' ', 1)}"] = 1 when 'software_version' + projection['Device.DeviceInfo.SoftwareVersion'] = 1 projection['InternetGatewayDevice.DeviceInfo.SoftwareVersion'] = 1 when 'add_tag', 'delete_tag' projection['_tags'] = 1 @@ -204,7 +205,10 @@ exports.getDevicePreset = (deviceId, presets, objects, aliases, callback) -> when 'software_version' devicePreset.softwareVersion ?= {} devicePreset.softwareVersion.preset = c.software_version - devicePreset.softwareVersion.current = common.getParamValueFromPath(device, 'InternetGatewayDevice.DeviceInfo.SoftwareVersion') + if device?.Device? # TR-181 data model + devicePreset.softwareVersion.current = common.getParamValueFromPath(device, 'Device.DeviceInfo.SoftwareVersion') + else # TR-098 data model + devicePreset.softwareVersion.current = common.getParamValueFromPath(device, 'InternetGatewayDevice.DeviceInfo.SoftwareVersion') else throw new Error('Unknown configuration type')