summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app.js79
-rw-r--r--package.json21
2 files changed, 100 insertions, 0 deletions
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"
+ }
+}