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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     1
snmpget = require('./lib/utils').snmpget
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     2
restify = require('restify')
7
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
     3
bunyan = require 'bunyan'
5
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     4
7
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
     5
appname = 'snmp2json'
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
     6
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
     7
log = bunyan.createLogger({name: appname})
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
     8
log.level 'debug'
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
     9
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    10
server = restify.createServer({name: appname, version: '1.0.0'})
5
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    11
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    12
server.use(restify.acceptParser(server.acceptable))
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    13
server.use(restify.queryParser())
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    14
server.use(restify.bodyParser())
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    15
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    16
server.get('/snmpget/:host/:oid', (req, res, next) ->
7
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    17
  log.debug { route: 'snmpget-single', action: 'request', host: req.params.host, oid: req.params.oid }
5
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    18
  opts =
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    19
    host: req.params.host
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    20
    oids: [ req.params.oid ]
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    21
  opts.community = req.params.community ? "public"
7
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    22
  snmpget(opts, (r) ->
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    23
    log.debug { route: 'snmpget-single', action: 'response', host: req.params.host, oid: req.params.oid }
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    24
    res.send r
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    25
    log.debug { route: 'snmpget-single', action: 'next-call', host: req.params.host, oid: req.params.oid }
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    26
    next()
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    27
  )
5
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    28
)
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    29
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    30
server.post('/snmpget/:host', (req, res, next) ->
7
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    31
  log.debug { route: 'snmpget', action: 'request', host: req.params.host, oidsCount: req.params.oids.length  }
5
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    32
  opts =
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    33
    host: req.params.host
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    34
    oids: req.params.oids
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    35
  opts.community = req.params.community ? "public"
7
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    36
  snmpget(opts, (r) ->
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    37
    log.debug { route: 'snmpget', action: 'response', host: req.params.host }
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    38
    res.send r
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    39
    log.debug { route: 'snmpget', action: 'next-call', host: req.params.host }
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    40
    next()
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    41
  )
5
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    42
)
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    43
2db4f3d512bb Server prototype
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    44
server.listen(8080, () ->
7
691c46c94ee6 server.coffee: logging
Tomas Zeman <tzeman@volny.cz>
parents: 6
diff changeset
    45
  log.info('%s listening at %s', server.name, server.url))