|
@@ -1,9 +1,52 @@
|
|
|
#!node
|
|
|
-var fileServer = (new require('node-static')).Server('./www'),
|
|
|
+var fs = require('fs'),
|
|
|
+ url = require('url'),
|
|
|
+ path = require('path'),
|
|
|
+ mimeTypes = {
|
|
|
+ 'html': 'text/html',
|
|
|
+ 'js': 'text/javascript',
|
|
|
+ 'css': 'text/css',
|
|
|
+ 'png': 'image/png',
|
|
|
+ 'jpg': 'image/jpeg'
|
|
|
+ },
|
|
|
app = require('http').createServer(function(req,res){
|
|
|
req.addListener('end',function(){
|
|
|
console.log('request made for '+req.url);
|
|
|
- fileServer.serve(req,res);
|
|
|
+ var uri = url.parse(req.url).pathname,
|
|
|
+ filename = path.join('./www/',unescape(uri)),
|
|
|
+ stats;
|
|
|
+ try{
|
|
|
+ stats = fs.lstatSync(filename);
|
|
|
+ }catch(e){
|
|
|
+ res.writeHead(404,{
|
|
|
+ 'Content-type': 'text/plain'
|
|
|
+ });
|
|
|
+ res.write('404 Not Found\n');
|
|
|
+ res.end();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(stats.isFile()){
|
|
|
+ var fileStream,
|
|
|
+ mimetype = mimeTypes[path.extname(filename).split('.')[1]];
|
|
|
+ res.writeHead(200,{
|
|
|
+ 'Content-Type': mimetype
|
|
|
+ });
|
|
|
+ fileStream = fs.createReadStream(filename);
|
|
|
+ fileStream.pipe(res);
|
|
|
+ }else if(stats.isDirectory()){
|
|
|
+ res.writeHead(200,{
|
|
|
+ 'Content-Type': 'text/plain'
|
|
|
+ });
|
|
|
+ res.write('Index of '+url+'\n');
|
|
|
+ res.write('TODO, show index');
|
|
|
+ res.end();
|
|
|
+ }else{
|
|
|
+ res.writeHead(500,{
|
|
|
+ 'Content-Type': 'text/plain'
|
|
|
+ });
|
|
|
+ res.write('500 Internal server error\n');
|
|
|
+ res.end();
|
|
|
+ }
|
|
|
}).resume();
|
|
|
}).listen(80),
|
|
|
io = require('socket.io').listen(app);
|