$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
-$logfile_pattern = "logfile[0-9]+(_*.*)?\.txt" //過去ログと判定する正規表現\r
\r
/**\r
* Module dependencies.\r
app.use(express.errorHandler()); \r
});\r
\r
+function SessionInfomation(token,admin)\r
+{\r
+ this.token = token;\r
+ this.admin = admin;\r
+}\r
+\r
// Routes\r
app.get("/chat", function(req, res){\r
var auth_string = getRandomString($token_length);\r
- req.session.items = {token:auth_string};\r
+ req.session.items = new SessionInfomation(auth_string,false);\r
\r
var room_number = 0;\r
if(typeof(req.query.rno) != "undefined")\r
res.render("chat",{rno:room_number,token:auth_string});\r
});\r
\r
-app.all("/log/" + $logfile_pattern,express.basicAuth(function (user, pass) {\r
+app.all("/admin_chat",express.basicAuth(function (user, pass) {\r
return user === $username && pass === $password;\r
}));\r
\r
-app.get("/log/" + $logfile_pattern, function(req, res){\r
- res.sendfile(__dirname + req.url);\r
+app.get("/admin_chat", function(req, res){\r
+ var auth_string = getRandomString($token_length);\r
+ req.session.items = new SessionInfomation(auth_string,true);\r
+\r
+ var room_number = 0;\r
+ if(typeof(req.query.rno) != "undefined")\r
+ room_number = req.query.rno;\r
+ res.render("chat",{rno:room_number,token:auth_string});\r
});\r
\r
app.all("/admin",express.basicAuth(function (user, pass) {\r
}else{\r
roomconfig.type = 0;\r
}\r
+ roomconfig.admin = socket.handshake.admin;\r
socket.json.emit("send roominfo",roomconfig);\r
\r
var romcount = $rooms.Get(rno).GetRomCount();\r
result = err;\r
else if(handshakeData.query.token != session.items.token)\r
result = "invaild token";\r
+ handshakeData.admin = session.items.admin;\r
sessionStore.destroy(sessionID);\r
callback(result,result == null && !err);\r
});\r
\r
var repacked_msg = CreateMessage(msg.name,date,msg.message);\r
\r
+ if(socket.handshake.admin)\r
+ repacked_msg.ip = ip;\r
+\r
socket.json.emit("req msg", repacked_msg);\r
\r
socket.json.broadcast.emit("req msg", repacked_msg);\r
return;\r
var path = $log_directory + "/" + file;\r
var log = new ChatLog(path);\r
- log.ToArray(function(array){\r
+ log.ToArray(socket.handshake.admin,function(array){\r
socket.json.emit("req pastlog",array);\r
});\r
}\r
\r
function ChatLog(path)\r
{\r
- this.ToArray = function(callback)\r
+ this.ToArray = function(hasIp,callback)\r
{\r
var state = fs.stat(path,function(err,state){\r
if(err)\r
var array = new Array();\r
var stream = fs.createReadStream(path);\r
new lazy(stream)\r
- .lines\r
+ .spilt(";")\r
.forEach(function(line){\r
- array.push(CreateMessageFromText(line.toString()));\r
+ var msg = CreateMessageFromText(line.toString());\r
+ if(hasIp == false)\r
+ msg.ip = "";\r
+ array.push(msg);\r
})\r
.join(function(){\r
callback(array);\r
msg.date + "<>" +\r
ip + "<>" +\r
msg.message +\r
- "\n";\r
+ ";";\r
return text;\r
}\r
\r
{\r
var result = {name:name,\r
date:date,\r
+ ip:"",\r
message:message};\r
return result;\r
}\r
{\r
var data = text.split("<>");\r
var msg = {name:data[0],\r
+ ip:data[2],\r
date:data[1],\r
message:data[3]};\r
return msg;\r
function sendRoomInfoListerner(info)\r
{\r
$roominfo = info;\r
- if(info.type == 0)\r
- {\r
- $socket.json.emit("get pastLogList",{rno:document.chat_form.rno.value});\r
- getCurretLog();\r
- }else if(info.type == 1){\r
+ var logflag = true;\r
+ var msg = "";\r
+ var adminmsg = "(管理モード)";\r
+ if(info.type == 1){\r
if(info.IsOwned)\r
- {\r
- $("#enter_message").append($free_password2);\r
- }else{\r
- $("#enter_message").append($free_password1);\r
- }\r
+ msg = $free_password2;\r
+ else\r
+ msg = $free_password1;\r
+ logflag = false;\r
}else if(info.type == 2){\r
- $("#enter_message").append($fixed_password);\r
+ msg = $fixed_password;\r
+ logflag = false;\r
}else if(info.type == 3){\r
- $("#enter_message").append($hidden_log_to_rom);\r
+ msg = $hidden_log_to_rom;\r
+ logflag = false;\r
+ }\r
+ if(info.admin)\r
+ {\r
+ logflag = true;\r
+ msg += adminmsg;\r
+ }\r
+ if(msg != "")\r
+ $("#enter_message").append(msg);\r
+ if(logflag)\r
+ {\r
+ $socket.json.emit("get pastLogList",{rno:document.chat_form.rno.value});\r
+ getCurretLog();\r
}\r
}\r
\r
\r
function pastLogEventListerner(msg)\r
{\r
- if(IsRomMode() && $roominfo.type != 0)\r
+ if(IsRomMode() && $roominfo.type != 0 && $roominfo.admin == false)\r
return;\r
for(var i = 0; i < msg.length; i++)\r
ParseMessage(msg[i]);\r
\r
function getMessageEventListerner(msg)\r
{\r
- if(IsRomMode() && $roominfo.type != 0)\r
+ if(IsRomMode() && $roominfo.type != 0 && $roominfo.admin == false)\r
return;\r
ParseMessage(msg);\r
createNameList();\r
}else{\r
ptag.append(msg.name);\r
}\r
+ if(msg.ip != "")\r
+ ptag.append(" " + msg.ip);\r
ptag.append(":");\r
ptag.append(childtag);\r
ptag.append("(" + $dateFormat.format(date) +")");\r
$("#enter_frame").css("display","block");\r
$("#chat_frame").css("display","none");\r
\r
- if($roominfo.type != 0)\r
+ if($roominfo.type != 0 && $roominfo.admin == false)\r
{\r
$("#message").empty();\r
$("#namelist").empty();\r