X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=chatServer.js;h=7cd3b4baa546d33f11e4399d24beb81b0bcaf57e;hb=d501b546a3aef96a7746665ddc99b7c948cdc0fd;hp=22455ba5bbd58c4c87b5184789601197be4d8bbd;hpb=4f8f21183c1d7806468275c436951090ad3620db;p=webchat%2FWebChat.git diff --git a/chatServer.js b/chatServer.js index 22455ba..7cd3b4b 100644 --- a/chatServer.js +++ b/chatServer.js @@ -24,23 +24,27 @@ $log_directory = "log"; //ログファイルを置くフォルダー $log_file_name = "logfile%d.txt"; //ログファイル名(%dはそのままにしておくこと) $splited_log_file_name = "logfile%d_%s.txt" //分割後のファイル名(%dと%sはそのままにしておくこと) $pastlogfile_pattern = "logfile%d(_+.*)?\.txt"; //過去ログと判定する正規表現 - +$secret = "5514EA2B-C9B2-4D65-8D81-1F33A180A0C2"; /** * Module dependencies. */ // Server -var express = require('express'); +var express = require("express"); + +var app = express(); -var app = module.exports = express.createServer(); +var http = require("http"); var util = require("util"); -var lazy = require("lazy"); +var lazy = require("./lazy.js"); var fs = require("fs"); -var parseCookie = require("connect").utils.parseCookie; +var cookie = require("express/node_modules/cookie"); + +var connectUtils = require("express/node_modules/connect/lib/utils"); var RedisStore = require("connect-redis")(express); var sessionStore = new RedisStore({host:$redisHost,port:$redisPort,pass:$redisPassword}); @@ -58,10 +62,9 @@ app.configure(function(){ app.set("view engine", "ejs"); app.use(express.bodyParser()); app.use(express.methodOverride()); - app.use(express.cookieParser()); + app.use(express.cookieParser($secret)); app.use(express.session({ store:sessionStore, - secret: "5514EA2B-C9B2-4D65-8D81-1F33A180A0C2", cookie: { httpOnly: false } })); app.use(app.router); @@ -93,6 +96,14 @@ app.get("/chat", function(req, res){ res.render("chat",{rno:room_number,token:auth_string}); }); +app.all("/log/*",express.basicAuth(function (user, pass) { + return user === $username && pass === $password; +})); + +app.get("/log/*",function (req, res) { + res.sendfile(__dirname + req.url); +}); + app.all("/admin_chat",express.basicAuth(function (user, pass) { return user === $username && pass === $password; })); @@ -180,14 +191,13 @@ function removeLog(files,callback) }); } -app.listen($port); -console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env); +var server = http.createServer(app).listen($port); /* * サーバー部分 */ -var io = require("socket.io").listen(app); +var io = require("socket.io").listen(server); io.configure('production', function(){ io.enable('browser client minification'); // minified されたクライアントファイルを送信する io.enable('browser client etag'); // バージョンによって etag によるキャッシングを有効にする @@ -258,7 +268,7 @@ for(var i = 0; i < $max_room_number; i++) function createLogDirectory() { - path.exists($log_directory,function(exists){ + fs.exists($log_directory,function(exists){ if(exists == false) fs.mkdirSync($log_directory); }); @@ -267,8 +277,8 @@ function createLogDirectory() function ParseAuthorization(handshakeData, callback) { if(handshakeData.headers.cookie) { - var cookie = handshakeData.headers.cookie; - var sessionID = parseCookie(cookie)["connect.sid"]; + var signedCookie = cookie.parse(handshakeData.headers.cookie); + var sessionID = connectUtils.parseSignedCookies(signedCookie, $secret)["connect.sid"]; sessionStore.get(sessionID, function (err, session) { var result = null; if (ipbanlist.IsBaned(handshakeData.address.address)) @@ -277,9 +287,11 @@ function ParseAuthorization(handshakeData, callback) result = err; else if(handshakeData.query.token != session.items.token) result = "invaild token"; - if(typeof(session) != "undefined" && result != null) + if(typeof(session) != "undefined" && result == null) + { handshakeData.admin = session.items.admin; - sessionStore.destroy(sessionID); + handshakeData.sessionID = sessionID; + } callback(result,result == null && !err); }); } else { @@ -297,6 +309,8 @@ function ParseDisconnect(socket,msg) socket.json.emit("send romcount",romcount); socket.json.broadcast.emit("send romcount",romcount); + sessionStore.destroy(socket.handshake.sessionID); + console.log("disconnected"); } @@ -635,7 +649,7 @@ function RoomInfomationCollection() } function GetRoomList(callback){ Clear(); - path.exists($room_configure_file_name,function(exists){ + fs.exists($room_configure_file_name,function(exists){ if(exists == false) { if(typeof(callback) == "function") @@ -830,7 +844,7 @@ function IpBanCollecion() function GetIpBanList(callback) { collection = {}; - path.exists($ip_ban_list_file_name,function(exists){ + fs.exists($ip_ban_list_file_name,function(exists){ if(exists == false) { if(typeof(callback) == "function")