}\r
if(typeof(req.body.registor) != "undefined")\r
{\r
- updateIpBanList(req.body.newbanlist,function(){\r
+ ipbanlist.Update(req.body.newbanlist,function(){\r
renderAdmin(req,res);\r
});\r
}\r
{\r
var auth_string = getRandomString($token_length);\r
req.session.items = {token:auth_string};\r
+ var iplist = ipbanlist.GetText();\r
\r
fs.readdir($log_directory,function(err,list){\r
res.render("admin", {\r
files: list,\r
log_directory:$log_directory,\r
- ipbanlist:getTextFromIpBanlist(ipbanlist),\r
+ ipbanlist:iplist,\r
token:auth_string,\r
roomlist:$rooms.GetString()\r
});\r
});\r
}\r
\r
-function getTextFromIpBanlist(list)\r
-{\r
- var text = "";\r
- for(var key in ipbanlist)\r
- {\r
- if(ipbanlist[key] == "")\r
- text += key + "\r\n";\r
- else\r
- text += key + ":" + ipbanlist[key] + "\r\n";\r
- }\r
- return text;\r
-}\r
-\r
-function updateIpBanList(text,callfunc)\r
-{\r
- async.waterfall([\r
- function(callback){\r
- fs.open($ip_ban_list_file_name,"w",callback);\r
- },\r
- function(fd,callback){\r
- var buf = new Buffer(text);\r
- fs.write(fd,buf,0,Buffer.byteLength(text),null,function(){\r
- callback(null,fd);\r
- });\r
- },\r
- function(fd,callback){\r
- fs.close(fd,function(){\r
- getIpBanList(callfunc);\r
- });\r
- }\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
\r
});\r
var clients = new Array();\r
\r
-var ipbanlist = {};\r
+var ipbanlist = new IpBanCollecion();\r
\r
createLogDirectory();\r
\r
-getIpBanList();\r
-\r
for(var i = 0; i < $max_room_number; i++)\r
{\r
clients[i] =io\r
.authorization(ParseAuthorization)\r
.on("connection", function (socket) {\r
console.log("connected from %s",GetClientIPAdress(socket));\r
+ socket.json.emit("send roomlist",$rooms.GetKeys());\r
socket.on("get pastLogList", function (msg) {\r
ParseGetPastLogList(socket,msg);\r
});\r
});\r
}\r
\r
-function getIpBanList(callback)\r
-{\r
- ipbanlist = {};\r
- path.exists($ip_ban_list_file_name,function(exists){\r
- if(exists == false)\r
- {\r
- if(typeof(callback) == "function")\r
- callback();\r
- return;\r
- }\r
- var stream = fs.createReadStream($ip_ban_list_file_name);\r
- new lazy(stream)\r
- .lines\r
- .forEach(function(line){\r
- var token = line.toString().split(":");\r
- var ip = token[0].replace(/(\r|\n|\r\n)/gm, "");\r
- if(token.length == 1)\r
- ipbanlist[ip] = "";\r
- else\r
- ipbanlist[ip] = token[1];\r
- })\r
- .join(function(){\r
- if(typeof(callback) == "function")\r
- callback();\r
- });\r
- });\r
-}\r
-\r
function ParseAuthorization(handshakeData, callback)\r
{\r
if(handshakeData.headers.cookie) {\r
var sessionID = parseCookie(cookie)["connect.sid"];\r
sessionStore.get(sessionID, function (err, session) {\r
var result = null;\r
- if (err || ipbanlist[handshakeData.address.address] == "r")\r
+ if (err || ipbanlist.IsBaned(handshakeData.address.address))\r
result = "failed get from session store";\r
else if(handshakeData.query.token != session.items.token)\r
result = "invaild token";\r
{\r
var ip = GetClientIPAdress(socket);\r
\r
- if(ip in ipbanlist)\r
+ if(ipbanlist.IsBlockedToWrite(ip))\r
{\r
socket.emit("error",$block_message);\r
return;\r
{\r
var ip = GetClientIPAdress(socket);\r
\r
- if(ip in ipbanlist)\r
+ if(ipbanlist.IsBlockedToWrite(ip))\r
{\r
socket.emit("error",$block_message);\r
return;\r
}\r
return retval;\r
};\r
+ this.GetKeys = function(){\r
+ var retval = {};\r
+ for(var rno in collection)\r
+ {\r
+ retval[rno] = {};\r
+ }\r
+ return retval;\r
+ }\r
\r
for(var i=0; i<arguments.length; i++)\r
{\r
}\r
}\r
}\r
+\r
+//IPBANクラス\r
+function IpBanCollecion()\r
+{\r
+ var collection = {};\r
+ this.IsBaned = function(ip){\r
+ return collection[ip] == "r";\r
+ }\r
+ this.IsBlockedToWrite = function(ip){\r
+ return ip in collection;\r
+ }\r
+ this.GetText = function(){\r
+ var text = "";\r
+ for(var key in collection)\r
+ {\r
+ if(collection[key] == "")\r
+ text += key + "\r\n";\r
+ else\r
+ text += key + ":" + collection[key] + "\r\n";\r
+ }\r
+ return text;\r
+ }\r
+ this.Update = function(text,callfunc){\r
+ async.waterfall([\r
+ function(callback){\r
+ fs.open($ip_ban_list_file_name,"w",callback);\r
+ },\r
+ function(fd,callback){\r
+ var buf = new Buffer(text);\r
+ fs.write(fd,buf,0,Buffer.byteLength(text),null,function(){\r
+ callback(null,fd);\r
+ });\r
+ },\r
+ function(fd,callback){\r
+ fs.close(fd,function(){\r
+ GetIpBanList(callfunc);\r
+ });\r
+ }\r
+ ]);\r
+ }\r
+ function GetIpBanList(callback)\r
+ {\r
+ collection = {};\r
+ path.exists($ip_ban_list_file_name,function(exists){\r
+ if(exists == false)\r
+ {\r
+ if(typeof(callback) == "function")\r
+ callback();\r
+ return;\r
+ }\r
+ var stream = fs.createReadStream($ip_ban_list_file_name);\r
+ new lazy(stream)\r
+ .lines\r
+ .forEach(function(line){\r
+ var token = line.toString().replace(/(\r|\n|\r\n)/gm, "").split(":");\r
+ var ip = token[0];\r
+ if(token.length == 1)\r
+ collection[ip] = "";\r
+ else\r
+ collection[ip] = token[1];\r
+ })\r
+ .join(function(){\r
+ if(typeof(callback) == "function")\r
+ callback();\r
+ });\r
+ });\r
+ }\r
+ GetIpBanList();\r
+}\r
+\r