server.coffee
author Tomas Zeman <tzeman@volny.cz>
Fri, 12 Apr 2013 10:43:01 +0200
changeset 7 691c46c94ee6
parent 6 cefe9d604286
permissions -rw-r--r--
server.coffee: logging

snmpget = require('./lib/utils').snmpget
restify = require('restify')
bunyan = require 'bunyan'

appname = 'snmp2json'

log = bunyan.createLogger({name: appname})
log.level 'debug'

server = restify.createServer({name: appname, version: '1.0.0'})

server.use(restify.acceptParser(server.acceptable))
server.use(restify.queryParser())
server.use(restify.bodyParser())

server.get('/snmpget/:host/:oid', (req, res, next) ->
  log.debug { route: 'snmpget-single', action: 'request', host: req.params.host, oid: req.params.oid }
  opts =
    host: req.params.host
    oids: [ req.params.oid ]
  opts.community = req.params.community ? "public"
  snmpget(opts, (r) ->
    log.debug { route: 'snmpget-single', action: 'response', host: req.params.host, oid: req.params.oid }
    res.send r
    log.debug { route: 'snmpget-single', action: 'next-call', host: req.params.host, oid: req.params.oid }
    next()
  )
)

server.post('/snmpget/:host', (req, res, next) ->
  log.debug { route: 'snmpget', action: 'request', host: req.params.host, oidsCount: req.params.oids.length  }
  opts =
    host: req.params.host
    oids: req.params.oids
  opts.community = req.params.community ? "public"
  snmpget(opts, (r) ->
    log.debug { route: 'snmpget', action: 'response', host: req.params.host }
    res.send r
    log.debug { route: 'snmpget', action: 'next-call', host: req.params.host }
    next()
  )
)

server.listen(8080, () ->
  log.info('%s listening at %s', server.name, server.url))