diff options
author | Tuowen Zhao <ztuowen@gmail.com> | 2016-03-10 13:57:39 -0700 |
---|---|---|
committer | Tuowen Zhao <ztuowen@gmail.com> | 2016-03-10 13:57:39 -0700 |
commit | ca3899284213e2c52ee982dd3a568c78f27cedf3 (patch) | |
tree | bb46e81f3d1e4d765eeb76ef0cb21627bc83db73 | |
download | serverstat-ca3899284213e2c52ee982dd3a568c78f27cedf3.tar.gz serverstat-ca3899284213e2c52ee982dd3a568c78f27cedf3.tar.bz2 serverstat-ca3899284213e2c52ee982dd3a568c78f27cedf3.zip |
init commit
-rw-r--r-- | app.js | 79 | ||||
-rw-r--r-- | package.json | 21 |
2 files changed, 100 insertions, 0 deletions
@@ -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" + } +} |