#!/usr/bin/env node var cmn=require("./modules/$common.js"); var app=require("express")(), http=require("http"), httpServer=http.Server(app), io=require("socket.io")(httpServer), url=require("url"), fs=require("fs"), util=require("util"), bodyParser=require("body-parser"), basicAuth=require("basic-auth"); if(process.argv.length>3){ console.log("Pass optional port as first argument"); process.exit(1); } var PORT=process.argv.length==3?+process.argv[2]:80; var whatpulse={"keys":"","clicks":""}; function refreshWhatpulse(){ http.get("http://api.whatpulse.org/user.php?user=tomsmeding&format=json&formatted=yes",function(res){ var body=""; res.on("data",function(data){body+=data;}); res.on("end",function(){ try{body=JSON.parse(body);} catch(e){return;} whatpulse.keys=body.Keys/*.replace(/,/g," ")*/; whatpulse.clicks=body.Clicks/*.replace(/,/g," ")*/; }); }); } setInterval(refreshWhatpulse,6*3600*1000); //every 6 hours refreshWhatpulse(); /*app.use(function (req, res, next) { console.log(req.subdomains); next(); });*/ app.use(bodyParser.text()); var module_list=fs.readdirSync("modules").filter(function(f){ return ["$common.js",".DS_Store"].indexOf(f)==-1&&f[0]!="$"; }); for(i=0;i",path) .replace("[/*LISTINGLISTING*/]",JSON.stringify(items)) ); } else res.send("I don't recognise that file."); } function makeUrlSafe(req,sliceLength){ var parsed=url.parse(req.url); return parsed.pathname.slice(sliceLength).replace(/\/\.+[^\/]*\//g,"/"); } app.get("/",function(req,res){ res.send( String(fs.readFileSync(cmn.serverdir+"/index.html")) .replace(//,whatpulse["keys"]) .replace(//,whatpulse["clicks"]) ); }); app.get(["/f/univq","/f/univq/*"],cmn.authgen()); app.get("/f/*",function(req,res){ requestFile(req,res,makeUrlSafe(req,2)); }); app.get("/.well-known/*",function(req,res){ requestFile(req,res,"/well-known"+makeUrlSafe(req,12)); }); ["o","k","rip","rip2"].forEach(function(target){ app.get("/"+target,function(req,res){ res.sendFile(cmn.rootdir+"/web_files/"+target+".html"); }); app.get("/"+target+"/*",function(req,res){ res.set('Content-Type', 'text/html'); res.send( String(fs.readFileSync(cmn.rootdir+"/web_files/"+target+".html")) .replace("",cmn.simpleHTMLescape(url.parse(req.url).pathname.slice(target.length+2))) ); }); }); app.get("/dr",function(req,res){ res.sendFile(cmn.rootdir+"/web_files/duckroll.html"); }); app.get(["/gpg","/pgp","/gpg.asc","/pgp.asc"],function(req,res){ res.type("text/plain"); res.sendFile(cmn.rootdir+"/web_files/pgp.asc"); }); /*app.get("/chat",function(req,res){ res.redirect(301,"http://tomsmeding.com:81"); });*/ var server=httpServer.listen(PORT,function(){ var host=server.address().address; var port=server.address().port; console.log("Server listening at http://"+host+":"+port); });