$password_resetted_message = "パスワードをリセットしました"; //パスワードが再設定されたときに表示されるメッセージ\r
$failed_set_password_message = "パスワードの設定に失敗しました"; //パスワードが再設定されたときに表示されるメッセージ\r
$ip_ban_list_file_name = "ipbanlist.txt"; //アクセスを禁止するIPが記録されているファイル\r
+$room_configure_file_name = "roomlist.txt"; //ルームの設定が記録されているファイル\r
$port = process.env.port || 3000; //ポート\r
$username = "admin"; //管理者用のページにアクセスできるユーザ名\r
$password = "admin"; //管理者用のページにアクセスするのに必要なパスワード\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
-// rno 設定したい部屋番号\r
-// password パスワードを設定する。nullにすると利用者がパスワードの設定をすることができる\r
-//記述例:\r
-// new RoomInfomationCollection(\r
-// {rno:"1",password:"test"},\r
-// {rno:"2",password:null}\r
-// )\r
-$rooms = new RoomInfomationCollection(\r
- {rno:"1",password:"test"},\r
- {rno:"2",password:null}\r
-);\r
\r
/**\r
* Module dependencies.\r
}\r
if(typeof(req.body.updateroom) != "undefined")\r
{\r
- CreateRoomsFromString(req.body.newroomlist);\r
- renderAdmin(req,res);\r
+ $rooms.Update(req.body.newroomlist,function(){\r
+ renderAdmin(req,res);\r
+ });\r
}\r
});\r
\r
var clients = new Array();\r
\r
var ipbanlist = new IpBanCollecion();\r
+var $rooms = new RoomInfomationCollection();\r
\r
createLogDirectory();\r
\r
function RoomInfomationCollection()\r
{\r
var collection = {};\r
- this.Clear = function(){\r
- collection = {};\r
- };\r
- this.Add = function(rno,pass){\r
- collection[rno] = {time : null,\r
- password : pass,\r
- owner : null,\r
- authed_list : {}};\r
- if(pass != null)\r
- collection[rno].owner = $system_name;\r
- };\r
this.Reset = function(rno,owner){\r
var date = new Date();\r
var time = date.getTime();\r
}\r
return retval;\r
}\r
-\r
- for(var i=0; i<arguments.length; i++)\r
- {\r
- this.Add(arguments[i].rno,arguments[i].password);\r
- } \r
-}\r
-\r
-function CreateRoomsFromString(str)\r
-{\r
- $rooms.Clear();\r
- var lines = str.split("\r\n");\r
- for(var i in lines)\r
- {\r
- if(lines[i] == "")\r
- continue;\r
- var token = lines[i].split(":");\r
- if(token.length == 1)\r
- {\r
- $rooms.Add(token[0],null);\r
- }\r
- else if(token.length == 2)\r
- {\r
- var rno = token[0];\r
- var pass = token[1];\r
- if(pass == "")\r
- pass = null;\r
- $rooms.Add(rno, pass);\r
- }\r
+ this.Update = function(text,callfunc){\r
+ async.waterfall([\r
+ function(callback){\r
+ fs.open($room_configure_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
+ GetRoomList(callfunc);\r
+ });\r
+ }\r
+ ]);\r
+ }\r
+ function GetRoomList(callback){\r
+ Clear();\r
+ path.exists($room_configure_file_name,function(exists){\r
+ if(exists == false)\r
+ {\r
+ if(typeof(callback) == "function")\r
+ callback();\r
+ return;\r
+ }\r
+ var stream = fs.createReadStream($room_configure_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
+ if(token.length == 1)\r
+ {\r
+ Add(token[0],null);\r
+ }\r
+ else if(token.length == 2)\r
+ {\r
+ var rno = token[0];\r
+ var pass = token[1];\r
+ if(pass == "")\r
+ pass = null;\r
+ Add(rno, pass);\r
+ }\r
+ })\r
+ .join(function(){\r
+ if(typeof(callback) == "function")\r
+ callback();\r
+ });\r
+ });\r
}\r
+ function Clear(){\r
+ collection = {};\r
+ };\r
+ function Add(rno,pass){\r
+ collection[rno] = {time : null,\r
+ password : pass,\r
+ owner : null,\r
+ authed_list : {}};\r
+ if(pass != null)\r
+ collection[rno].owner = $system_name;\r
+ };\r
+\r
+ GetRoomList();\r
}\r
\r
//IPBANクラス\r