$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
$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
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
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
\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
});\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
\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
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
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
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
}\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
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