Browse Source

small updates

Nathaniel van Diepen 11 years ago
parent
commit
0a91b23d99
2 changed files with 47 additions and 3 deletions
  1. 45 2
      app/OmnomIRC.js
  2. 2 1
      app/www/index.html

+ 45 - 2
app/OmnomIRC.js

@@ -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);

+ 2 - 1
app/www/index.html

@@ -9,8 +9,9 @@
 		<script type="text/javascript" src="js/jquery.timago.js"></script>
 		<script type="text/javascript" src="js/jquery.ui.position.js"></script>
 		<script type="text/javascript" src="js/jquery.contextMenu.js"></script>
-		<script type="text/javascript" src="js/jquery.hammer.js"></script>
+		<script type="text/javascript" src="js/jquery.hammer.min.js"></script>
 		<script type="text/javascript" src="js/jquery.storage.js"></script>
+		<script type="text/javascript" src="js/socket.io.js"></script>
 		<script type="text/javascript" src="js/omnomirc.js"></script>
 		<link rel="stylesheet" href="css/style.css"></link>
 		<link rel="stylesheet" href="css/jquery.contextMenu.css"></link>