OSDN Git Service

IPBanクラスを新設した
authorkonekoneko <jbh03215@gmail.com>
Wed, 19 Sep 2012 16:09:20 +0000 (01:09 +0900)
committerkonekoneko <jbh03215@gmail.com>
Wed, 19 Sep 2012 16:09:20 +0000 (01:09 +0900)
chatServer.js

index 461c0e5..7ea7872 100644 (file)
@@ -138,7 +138,7 @@ app.post("/admin",function(req,res){
        }\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
@@ -153,12 +153,13 @@ function renderAdmin(req,res)
 {\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
@@ -202,12 +203,10 @@ io.configure('production', function(){
 });\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
@@ -255,7 +254,7 @@ function ParseAuthorization(handshakeData, callback)
                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
@@ -290,7 +289,7 @@ function ParseJoin(socket,msg)
 {\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
@@ -327,7 +326,7 @@ function ParseQuit(socket,msg)
 {\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
@@ -667,64 +666,72 @@ function CreateRoomsFromString(str)
        }\r
 }\r
 \r
-//IPBAN\r
-function getTextFromIpBanlist(list)\r
+//IPBANクラス\r
+function IpBanCollecion()\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
+       var collection = {};\r
+       this.IsBaned = function(ip){\r
+               return collection[ip] == "r";\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
-function getIpBanList(callback)\r
-{\r
-       ipbanlist = {};\r
-       path.exists($ip_ban_list_file_name,function(exists){\r
-               if(exists == false)\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(typeof(callback) == "function")\r
-                               callback();\r
-                       return;\r
+                       if(collection[key] == "")\r
+                               text += key + "\r\n";\r
+                       else\r
+                               text += key + ":" + collection[key] + "\r\n";\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
+               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
-                       });\r
-       });\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