X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=chatServer.js;h=16ae00e9bd4e7a8f75feabbcb21bff9c910be38d;hb=0c6b595ff83c316e21966ac33416b4192f21b904;hp=7ea787227b9cd2978a744e7824b91ef03520bbf9;hpb=d2d228c3ab16b7bfabc715b708aa6f81cd73799b;p=webchat%2FWebChat.git diff --git a/chatServer.js b/chatServer.js index 7ea7872..16ae00e 100644 --- a/chatServer.js +++ b/chatServer.js @@ -9,10 +9,8 @@ $not_match_password = "パスワードが一致しませんでした"; //パス $password_setted_message = "パスワードを設定しました"; //パスワードが設定されたときに表示されるメッセージ $password_resetted_message = "パスワードをリセットしました"; //パスワードが再設定されたときに表示されるメッセージ $failed_set_password_message = "パスワードの設定に失敗しました"; //パスワードが再設定されたときに表示されるメッセージ -$free_password1 = "最初に入室する人が自由にパスワードを設定できます"; //自由パスワードメッセージ1 -$free_password2 = "この部屋は使用されています。パスワードを入力してください"; //自由パスワードメッセージ2 -$fixed_password = "この部屋にはパスワードが設定されています"; //固定パスワードルーム $ip_ban_list_file_name = "ipbanlist.txt"; //アクセスを禁止するIPが記録されているファイル +$room_configure_file_name = "roomlist.txt"; //ルームの設定が記録されているファイル $port = process.env.port || 3000; //ポート $username = "admin"; //管理者用のページにアクセスできるユーザ名 $password = "admin"; //管理者用のページにアクセスするのに必要なパスワード @@ -26,18 +24,6 @@ $log_file_name = "logfile%d.txt"; //ログファイル名(%dはそのままに $splited_log_file_name = "logfile%d_%s.txt" //分割後のファイル名(%dと%sはそのままにしておくこと) $pastlogfile_pattern = "logfile%d(_+.*)?\.txt"; //過去ログと判定する正規表現 $logfile_pattern = "logfile[0-9]+(_*.*)?\.txt" //過去ログと判定する正規表現 -//パスワードを自由に設定できる部屋のリスト -// rno 設定したい部屋番号 -// password パスワードを設定する。nullにすると利用者がパスワードの設定をすることができる -//記述例: -// new RoomInfomationCollection( -// {rno:"1",password:"test"}, -// {rno:"2",password:null} -// ) -$rooms = new RoomInfomationCollection( - {rno:"1",password:"test"}, - {rno:"2",password:null} -); /** * Module dependencies. @@ -98,14 +84,7 @@ app.get("/chat", function(req, res){ var room_number = 0; if(typeof(req.query.rno) != "undefined") room_number = req.query.rno; - var msg = ""; - if($rooms.IsFixedPassword(room_number)) - msg = $fixed_password; - else if($rooms.IsContains(room_number)) - msg = $free_password2; - if($rooms.IsFirstAuth(room_number)) - msg = $free_password1; - res.render("chat",{rno:room_number,token:auth_string,message:msg}); + res.render("chat",{rno:room_number,token:auth_string}); }); app.all("/log/" + $logfile_pattern,express.basicAuth(function (user, pass) { @@ -144,8 +123,9 @@ app.post("/admin",function(req,res){ } if(typeof(req.body.updateroom) != "undefined") { - CreateRoomsFromString(req.body.newroomlist); - renderAdmin(req,res); + $rooms.Update(req.body.newroomlist,function(){ + renderAdmin(req,res); + }); } }); @@ -204,6 +184,7 @@ io.configure('production', function(){ var clients = new Array(); var ipbanlist = new IpBanCollecion(); +var $rooms = new RoomInfomationCollection(); createLogDirectory(); @@ -214,7 +195,18 @@ for(var i = 0; i < $max_room_number; i++) .authorization(ParseAuthorization) .on("connection", function (socket) { console.log("connected from %s",GetClientIPAdress(socket)); - socket.json.emit("send roomlist",$rooms.GetKeys()); + + var rno = GetRoomNumberFromName(socket.namespace.name); + var roomconfig = {}; + if($rooms.IsFixedPassword(rno)) + roomconfig.type = 2; + else if($rooms.IsContains(rno)) + roomconfig.type = 1; + else + roomconfig.type = 0; + roomconfig.IsOwned = !$rooms.IsFirstAuth(rno); + socket.json.emit("send roominfo",roomconfig); + socket.on("get pastLogList", function (msg) { ParseGetPastLogList(socket,msg); }); @@ -536,17 +528,6 @@ function CreateMessageFromText(text) function RoomInfomationCollection() { var collection = {}; - this.Clear = function(){ - collection = {}; - }; - this.Add = function(rno,pass){ - collection[rno] = {time : null, - password : pass, - owner : null, - authed_list : {}}; - if(pass != null) - collection[rno].owner = $system_name; - }; this.Reset = function(rno,owner){ var date = new Date(); var time = date.getTime(); @@ -567,7 +548,6 @@ function RoomInfomationCollection() this.IsAuthed = function(rno,name){ if(!this.IsContains(rno)) return false; - console.log(util.inspect(collection[rno].authed_list)); return name == collection[rno].owner || name in collection[rno].authed_list; }; @@ -636,34 +616,70 @@ function RoomInfomationCollection() } return retval; } - - for(var i=0; i