From ca3899284213e2c52ee982dd3a568c78f27cedf3 Mon Sep 17 00:00:00 2001 From: Tuowen Zhao Date: Thu, 10 Mar 2016 13:57:39 -0700 Subject: init commit --- app.js | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 21 ++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 app.js create mode 100644 package.json diff --git a/app.js b/app.js new file mode 100644 index 0000000..7ec004e --- /dev/null +++ b/app.js @@ -0,0 +1,79 @@ +var os = require('os'); +var http = require('http'); +var ps = require('portscanner'); +var dispatcher = require('httpdispatcher'); +var PORT = 3369; + +var serverstat={ + "release":"undef", + "uptime":"", + "load":[0,0,0], + "mem":0, + "mc":false +} + +serverstat.release = os.release(); + +function secondsToString(seconds) +{ + function adds(x,a){ + return x + " " + a + " "; + } + var numdays = Math.floor(seconds / 86400); seconds%=86400; + var numhours = Math.floor(seconds / 3600); seconds%=3600; + var numminutes = Math.floor(seconds / 60); seconds%=60; + return adds(numdays,"day") + adds(numhours,"hrs")+ adds(numminutes,"min") + adds(seconds,"sec"); + +} + +function refreshStat(){ + ps.checkPortStatus(25565, 'cnjoe.info', function(error, status) { + // Status is 'open' if currently in use or 'closed' if available + if (status=='open') + serverstat.mc=true; + else + serverstat.mc=false; + }) + serverstat.uptime = os.uptime(); + serverstat.mem = 1 - os.freemem()/os.totalmem(); + serverstat.load = os.loadavg(); +} + +function handleRequest(request, response){ + try { + //log the request on console + console.log(request.url); + //Disptach + dispatcher.dispatch(request, response); + } catch(err) { + console.log(err); + } +} + +//For all your static (js/css/images/etc.) set the directory name (relative path). +dispatcher.setStatic('resources'); + +//A sample GET request +dispatcher.onGet("/stat", function(req, res) { + res.writeHead(200, {'Content-Type': 'application/json'}); + res.end(JSON.stringify(serverstat)); +}); + +//A sample POST request +//dispatcher.onPost("/post1", function(req, res) { +// res.writeHead(200, {'Content-Type': 'text/plain'}); +// res.end('Got Post Data'); +//}); + +//Create a server +var server = http.createServer(handleRequest); + +//Lets start our server +server.listen(PORT, function(){ + //Callback triggered when server is successfully listening. Hurray! + console.log("Server listening on: http://localhost:%s", PORT); +}); + +refreshStat(); + +setInterval(refreshStat,5000); diff --git a/package.json b/package.json new file mode 100644 index 0000000..38c1be5 --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "name": "serverstat", + "version": "0.0.1", + "description":"server status generator", + "bin": { + "bilicom": "./bin/serverstat.js" + }, + "author": { + "name": "Tuowen Zhao", + "email": "ztuowen@gmail.com" + }, + "repository": { + "type": "git", + "url": "https://github.com/ztuowen/bilicom.git" + }, + "license": "MIT", + "dependencies": { + "portscanner": "1.0.0", + "httpdispatcher": "1.0.0" + } +} -- cgit v1.2.3-70-g09d2