node package manager
Loosely couple your services. Use Orgs to version and reuse your code. Create a free org »

itsnmptrap

ItSNMPTrap

It's a trap...receiver router similar in concept to how Expressjs routes HTTP requests. Has been tested and works with SNMPv2c.

Makes use of the snmp-native package for parsing SNMP messages.

Examples

var snmprouter = require('itsnmptrap');
var trapper = new snmprouter({once: true});
 
trapper.use(function(trap, next) {
  //only allow traps from 
  next(/192\.168\.1\./.test(trap.remote.address));
});
 
trapper.trap('1.3.6.1.4.1.20632.2.3', function(trap) {
  console.log("Barracuda out queue:", trap.value);
})

Methods

constructor([opts])

opts: {
  once: false // If true, only executes the first matching trap() callback.
              // Sets the default for all trap()s.
}

use([oid], callback)

Somewhat similar to Expressjs and it's use(). This can filter the incoming SNMP messages before getting the trap()s.

  • oid can be either a string or a RegExp. If not provided uses the RegExp /./.

If oid is a string, it must match against entire oid from the snmp message. OIDs for specific hosts can be defined by using the ipaddress@oid format. When using the ipaddress@oid format, the ip address portion can be a regex that does not make use of the @ sign.

Alternatively, RegExp can be used for matching oids.

callback(trap, next)
  //next takes a boolean or no value.
  //True or undefined proceeds to the next filter
  //False or not calling next() stops processing the chain and will 
  //  prevent further processing of the SNMP message.
 
trap = {
  oid: 'oid'
  ,value: 'value'
  ,varbind: 'raw varbind provided by snmp-native'
  ,msg: 'entire snmp-native object of original message'
  ,remote: {address: 'remote ip address', port: 'remote port'}
}
example
//don't process any oids starting with 1.3
use(/1\.3/, function(trap, next) { next(false); });
//don't process any oid's with the remote ip address 1.1.1.1.
use(function(trap, next) { next(trap.remote.address == '1.1.1.1'); });

trap([oid], [opt], callback)

  • oid is the same as use().
  • opt is the same as the constructor and overrides the value given when the object instance is created.
trap(oid, callback)
trap(opt, callback)
trap(oid, opt, callback)
 
callback(trap) //trap is the same as the one from use().

listen(port, [address])

Start listening on a port for SNMP traps

close()

Stops the UDP socket.

License

MIT