OSDN Git Service

依存関係を更新した
[webchat/WebChat.git] / chatServer.js
index 22455ba..6b73ea2 100644 (file)
@@ -5,6 +5,7 @@ $max_room_number = 3;   //最大ルーム数
 $spilt_size = 1024 * 512;      //分割するサイズ\r
 $reset_password_diff = 1000 * 60 * 60; //ルームパスワードをリセットする間隔\r
 $gc_time_interval = 1000 * 60 * 60;    //ゴミ掃除を行う間隔\r
+$invaild_token_message = "トークンが一致しませんでした";\r
 $block_message = "メッセージの送信に失敗しました";      //ブロック時のメッセージ\r
 $not_match_password = "パスワードが一致しませんでした"; //パスワードが一致しない場合に表示されるメッセージ\r
 $password_setted_message = "パスワードを設定しました";     //パスワードが設定されたときに表示されるメッセージ\r
@@ -24,23 +25,27 @@ $log_directory = "log";     //ログファイルを置くフォルダー
 $log_file_name = "logfile%d.txt";      //ログファイル名(%dはそのままにしておくこと)\r
 $splited_log_file_name = "logfile%d_%s.txt"    //分割後のファイル名(%dと%sはそのままにしておくこと)\r
 $pastlogfile_pattern = "logfile%d(_+.*)?\.txt";        //過去ログと判定する正規表現\r
-\r
+$secret = "5514EA2B-C9B2-4D65-8D81-1F33A180A0C2";      //cookie用秘密鍵\r
 /**\r
  * Module dependencies.\r
  */\r
 \r
 // Server\r
-var express = require('express');\r
+var express = require("express");\r
+\r
+var app = express();\r
 \r
-var app = module.exports = express.createServer();\r
+var http = require("http");\r
 \r
 var util = require("util");\r
 \r
-var lazy = require("lazy");\r
+var lazy = require("./lazy.js");\r
 \r
 var fs = require("fs");\r
 \r
-var parseCookie = require("connect").utils.parseCookie;\r
+var cookie = require("express/node_modules/cookie");\r
+\r
+var connectUtils = require("express/node_modules/connect/lib/utils");\r
 \r
 var RedisStore = require("connect-redis")(express);\r
 var sessionStore = new RedisStore({host:$redisHost,port:$redisPort,pass:$redisPassword});\r
@@ -58,10 +63,9 @@ app.configure(function(){
        app.set("view engine", "ejs");\r
        app.use(express.bodyParser());\r
        app.use(express.methodOverride());\r
-       app.use(express.cookieParser());\r
+       app.use(express.cookieParser($secret));\r
        app.use(express.session({\r
                store:sessionStore,\r
-               secret: "5514EA2B-C9B2-4D65-8D81-1F33A180A0C2",\r
                cookie: { httpOnly: false }\r
        }));\r
        app.use(app.router);\r
@@ -93,6 +97,14 @@ app.get("/chat", function(req, res){
        res.render("chat",{rno:room_number,token:auth_string});\r
 });\r
 \r
+app.all("/log/*",express.basicAuth(function (user, pass) {\r
+       return user === $username && pass === $password;\r
+}));\r
+\r
+app.get("/log/*",function (req, res) {\r
+       res.sendfile(__dirname + req.url);\r
+});\r
+\r
 app.all("/admin_chat",express.basicAuth(function (user, pass) {\r
        return user === $username && pass === $password;\r
 }));\r
@@ -170,6 +182,13 @@ function getRandomString(length)
 \r
 function removeLog(files,callback)\r
 {\r
+       if(typeof(files) == "undefined")\r
+       {\r
+               if(typeof(callback) == "function")\r
+                       callback();\r
+               return;\r
+       }\r
+\r
        async.map(files,\r
        function(item,callback){\r
                fs.unlink($log_directory + "/" + item,callback);\r
@@ -180,14 +199,14 @@ function removeLog(files,callback)
        });\r
 }\r
 \r
-app.listen($port);\r
-console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);\r
+var server = http.createServer(app).listen($port);\r
+console.log("Express server listening on port %d in %s mode", $port, app.settings.env);\r
 \r
 /*\r
  * サーバー部分\r
  */\r
 \r
-var io = require("socket.io").listen(app);\r
+var io = require("socket.io").listen(server);\r
 io.configure('production', function(){\r
   io.enable('browser client minification');  // minified されたクライアントファイルを送信する\r
   io.enable('browser client etag');          // バージョンによって etag によるキャッシングを有効にする\r
@@ -258,7 +277,7 @@ for(var i = 0; i < $max_room_number; i++)
 \r
 function createLogDirectory()\r
 {\r
-       path.exists($log_directory,function(exists){\r
+       fs.exists($log_directory,function(exists){\r
                if(exists == false)\r
                        fs.mkdirSync($log_directory);\r
        });\r
@@ -267,8 +286,8 @@ function createLogDirectory()
 function ParseAuthorization(handshakeData, callback)\r
 {\r
        if(handshakeData.headers.cookie) {\r
-               var cookie = handshakeData.headers.cookie;\r
-               var sessionID = parseCookie(cookie)["connect.sid"];\r
+               var signedCookie = cookie.parse(handshakeData.headers.cookie);\r
+               var sessionID = connectUtils.parseSignedCookies(signedCookie, $secret)["connect.sid"];\r
                sessionStore.get(sessionID, function (err, session) {\r
                        var result = null;\r
                        if (ipbanlist.IsBaned(handshakeData.address.address))\r
@@ -277,9 +296,11 @@ function ParseAuthorization(handshakeData, callback)
                                result = err;\r
                        else if(handshakeData.query.token != session.items.token)\r
                                result = "invaild token";\r
-                       if(typeof(session) != "undefined" && result != null)\r
+                       if(typeof(session) != "undefined" && result == null)\r
+                       {\r
                                handshakeData.admin = session.items.admin;\r
-                       sessionStore.destroy(sessionID);\r
+                               handshakeData.sessionID = sessionID;\r
+                       }\r
                        callback(result,result == null && !err);\r
                });\r
        } else {\r
@@ -297,6 +318,8 @@ function ParseDisconnect(socket,msg)
        socket.json.emit("send romcount",romcount);\r
        socket.json.broadcast.emit("send romcount",romcount);\r
 \r
+       //sessionStore.destroy(socket.handshake.sessionID);\r
+\r
        console.log("disconnected");\r
 }\r
 \r
@@ -635,7 +658,7 @@ function RoomInfomationCollection()
        }\r
        function GetRoomList(callback){\r
                Clear();\r
-               path.exists($room_configure_file_name,function(exists){\r
+               fs.exists($room_configure_file_name,function(exists){\r
                        if(exists == false)\r
                        {\r
                                if(typeof(callback) == "function")\r
@@ -830,7 +853,7 @@ function IpBanCollecion()
        function GetIpBanList(callback)\r
        {\r
                collection = {};\r
-               path.exists($ip_ban_list_file_name,function(exists){\r
+               fs.exists($ip_ban_list_file_name,function(exists){\r
                        if(exists == false)\r
                        {\r
                                if(typeof(callback) == "function")\r