Socket
Socket
Sign inDemoInstall

@seydx/tr064

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@seydx/tr064

TR-064 - UPnP/IGD for node.js


Version published
Weekly downloads
5
decreased by-54.55%
Maintainers
1
Weekly downloads
 
Created
Source

tr-064

TR-064 - UPnP/IGD for node.js

Description

A library to interact with routers and other network devices. Tested and designd for Fritz.Box routers.

This library is capable of:

  • Supports the UPnP, IGD and PMR (Samsung TV) Protocol
  • Read and configure Services
  • Authentication with username/password or password only
  • SSL encryption
  • Transactions
  • Subscribe to Events with included EventServer

More info about TR-064: https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/AVM_TR-064_first_steps.pdf

Install

  npm install tr-064

It`s simple

Connect to the device and read a Service.

var tr = require('tr-064');
var tr064 = new tr.TR064();
tr064.initTR064Device('fritz.box', 49000, function(err, device) {
    if (!err) {
        var wanip = device.services['urn:dslforum-org:service:WANIPConnection:1'];
        wanip.actions.GetInfo(function(err, result) {
            console.log(result);
        });
    }
});

Save communication (SSL Encryption, Authentication)

var tr = require('tr-064');
var tr064 = new tr.TR064();
tr064.initTR064Device('fritz.box', 49000, function(err, device) {
    if (!err) {
        device.startEncryptedCommunication(function(err, sslDev) {
            if (!err) {
                sslDev.login([USER], [PASSWORD]);
                var wanip = sslDev.services['urn:dslforum-org:service:WANIPConnection:1'];
                wanip.actions.GetInfo(function(err, result) {
                    console.log(result);
                });
            }
        });
    }
});

List All Services and Variables

Get the info from both protocols.

var tr = require('tr-064');
var tr064 = new tr.TR064();
tr064.initTR064Device('fritz.box', 49000, function(err, device) {
    if (!err) {
        console.log('Found device! - TR-064');
        showDevice(device);
    }
});

tr064.initIGDDevice('fritz.box', 49000, function(err, device) {
    if (!err) {
        console.log('Found device! - IGD');
        showDevice(device);
    }
});

var showDevice = function(device) {
    console.log('=== ' + device.meta.friendlyName + ' ===');
    device.meta.servicesInfo.forEach(function(serviceType) {
        var service = device.services[serviceType];
        console.log('  ---> ' + service.meta.serviceType + ' <---');
        service.meta.actionsInfo.forEach(function(action) {
            console.log('   # ' + action.name + '()');
            action.inArgs.forEach(function(arg) {
                console.log('     IN : ' + arg);
            });
            action.outArgs.forEach(function(arg) {
                console.log('     OUT: ' + arg);
            });
        });
    });
};

Methods

initTR064Device(host, port, callback)

Initialize the TR - 064 UPnP controller

  • host - hostname of the device
  • port - port of the device(standard: 49000)
  • callback - (err, device)

initIGDDevice(host, port, callback)

Initialize the TR - 064 IGD controller

  • host - hostname of the device
  • port - port of the device(standard: 49000)
  • callback - (err, device)

device.startEncryptedCommunication([caFile],callback)

Starts SSL encrypted Communication

  • caFile - Filename of custom .pem file (Optional)
  • callback - (err, device)

device.stopEncryptedCommunication()

Stops SSL encrypted Communication

device.login([user],password)

Configure device to use authentication for every request

  • user - Username (Optional, default device user is used instead)
  • password - Device password

device.logout()

Configure device to not use authentication

device.startTransaction(callback)

Starts a 'device-side' transaction

  • callback - (err, device)

device.stopTransaction()

Ends the current transaction

device.meta

Array with all info about services and actions

device.services[Service Identifier]

Gets the specified service form the device

  • Service Identifier - usually in the form of: urn:dslforum-org:service:XXX:1

service.actions.XXX([{name: 'xx', value: 'xx'}], callback)

  • name - Argumentname for Action
  • value - Argumentvalue for Action
  • callback - (err, result)
service.actions.SetEnable([{ name: 'NewEnable', value: '1' }], function(err, result) {
    console.log(result);
});

Contributing

Feel free to provide PRs with updates to this package. But please follow these steps:

  • Fork it
  • Add your changes
  • Format your code: yarn format
  • Commit your changes, while adhearing to the Angular commit convention.
  • Submit your PR

Keywords

FAQs

Package last updated on 28 May 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc