}\r
if(typeof(req.body.updateroom) != "undefined")\r
{\r
- $rooms.Update(req.body.newroomlist,function(){\r
+ $rooms.Update(req.body,function(){\r
res.redirect("/admin");\r
});\r
}\r
log_directory:$log_directory,\r
ipbanlist:iplist,\r
token:req.session._csrf,\r
- roomlist:$rooms.GetString()\r
+ roomlist:$rooms.GetMessage()\r
});\r
});\r
}\r
this.IsContains = function(rno){\r
return rno in collection;\r
};\r
- this.GetString = function(){\r
- var retval = "";\r
+ this.GetMessage = function(){\r
+ var retval = new Array();\r
for(var rno in collection)\r
{\r
- if($rooms.Get(rno).IsVolatile())\r
- continue;\r
- var pass = collection[rno].password;\r
- if(pass == null)\r
- pass = "";\r
- var hiddenlog = collection[rno].hiddenlog;\r
- retval += rno + ":" + pass + ":" + hiddenlog + "\r\n";\r
+ item={};\r
+ item.applyflag = !$rooms.Get(rno).IsVolatile();\r
+ item.password = collection[rno].password;\r
+ if(item.password == null)\r
+ item.password = "";\r
+ item.hiddenlog = collection[rno].hiddenlog;\r
+ retval.push(item);\r
}\r
return retval;\r
};\r
}\r
return retval;\r
}\r
- this.Update = function(text,callfunc){\r
+ this.Update = function(data,callfunc){\r
Clear();\r
async.waterfall([\r
function(next){\r
pool.query("TRUNCATE TABLE rooms",null,next);\r
},\r
function(result,next){\r
- lines = text.split("\r\n");\r
+ console.log(util.inspect(data));\r
var items = new Array();\r
- for(var i = 0; i < lines.length; i++)\r
+ var config = data.config;\r
+ for(var i = 0; i < config.length; i++)\r
{\r
- if(lines[i] == "")\r
+ var rno = Number(config[i].applyflag);\r
+ if(isNaN(rno))\r
continue;\r
- var token = lines[i].split(":");\r
- if(token.length == 1)\r
- {\r
- Add(token[0],null,false);\r
- items.push(new Array(token[0],null,false));\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,false);\r
- items.push(new Array(token[0],pass,false));\r
- }\r
- else if(token.length == 3)\r
- {\r
- var rno = token[0];\r
- var pass = token[1];\r
- if(pass == "")\r
- pass = null;\r
- var hiddenlog = false;\r
- if(token[2] == "true")\r
- hiddenlog = true;\r
- Add(rno, pass,hiddenlog);\r
- items.push(new Array(token[0],pass,hiddenlog));\r
- }\r
+ var password,romonly;\r
+ if(typeof(config[rno].password)=="undefined")\r
+ password = null;\r
+ else if(config[rno].password == "")\r
+ password = null;\r
+ else\r
+ password = config[rno].password;\r
+ if(typeof(config[rno].hiddenlog)=="undefined")\r
+ romonly = false;\r
+ else\r
+ romonly = config[rno].hiddenlog == "romonly";\r
+\r
+ Add(rno,password,romonly);\r
+ items.push(new Array(rno,password,romonly));\r
}\r
pool.query("INSERT INTO rooms VALUES ?",[items],callfunc);\r
}\r
</div>\r
<div id="roomlist_tab">\r
<form action="/admin" method="post">\r
- <p>ルームリスト</p>\r
- <textarea name="newroomlist" rows="4" cols="40"><%= roomlist %></textarea>\r
- <br/>\r
+ <table>\r
+ <% for(var i=0; i < roomlist.length; i++) {%>\r
+ <tr>\r
+ <td>\r
+ <% if(roomlist[i].applyflag) {%>\r
+ <input type="checkbox" name="config[<%= i %>][applyflag]" value="<%= i %>" checked></input>\r
+ <% }else{ %>\r
+ <input type="checkbox" name="config[<%= i %>][applyflag]" value="<%= i %>"></input>\r
+ <% } %>\r
+ </td>\r
+ <td>\r
+ <%= i %>\r
+ </td>\r
+ <td>\r
+ パスワード\r
+ <input type="text" name="config[<%= i %>][password]" value="<%= roomlist[i].password %>"></input>\r
+ </td>\r
+ <td>\r
+ ROM禁止\r
+ <% if(roomlist[i].hiddenlog) {%>\r
+ <input type="checkbox" name="config[<%= i %>][hiddenlog]" value="romonly" checked></input>\r
+ <% }else{ %>\r
+ <input type="checkbox" name="config[<%= i %>][hiddenlog]" value="romonly"></input>\r
+ <% } %>\r
+ </td>\r
+ </tr>\r
+ <% } %>\r
+ </table>\r
<input type="hidden" name="_csrf" value="<%= token %>"></input>\r
<input type="submit" name="updateroom" value="登録">\r
</form>\r
<li>mysql -u root -p < init.sqlを実行する</li>\r
<li>main.jsを起動する</li>\r
</ol>\r
- <h2>管理サイト</h2>\r
- <p>[設置しているサーバー]/adminとアドレスバーに入力することで管理用のページにアクセスできます</p>\r
+ <h2>チャットの管理</h2>\r
+ <p>[設置しているサーバー]/adminとアドレスバーに入力することでチャット管理用のページにアクセスできます</p>\r
<p>このページではログの削除、アクセスを禁止するIPアドレスの設定、ルームの設定を行うことができます。</p>\r
- <p>IPアドレスの設定時に「IPアドレス:r」とすることで読み取りを禁止し、「IPアドレス」だけを記述することで書き込みを禁止します。</p>\r
- <p>ルームの設定では「部屋番号:パスワード」とすることで固定パスワードを設定し、「部屋番号」と記載することで利用者にパスワードを設定させることができます。また、「部屋番号::true」とした場合はROMを禁止することができます</p>\r
- <p>また、[設置しているサーバー]/profile/adminと入力することでプロフィールを管理することができます</p>\r
+ <h3>ipアドレスの設定</h3>\r
+ <p>テキストエリアに「IPアドレス:r」と記述することで読み取りを禁止し、「IPアドレス」だけを記述することで書き込みを禁止することができます。</p>\r
+ <h3>ルームの設定</h3>\r
+ <p>部屋番号にチェックを入れた状態では最初に入室した人がパスワードを設定できるようになります。この状態でパスワードを入力した場合、パスワードを入力しないと入室できなくなります。パスワードを空欄にし、ROM禁止にチェックマークを付けた場合、入室している人を除いてチャットの内容を閲覧することができなくなります</p>\r
<h2>チャットルームへのアクセス</h2>\r
<p>アドレスバーに[設置しているサーバー]/chatと入力することでチャットルームにアクセスできます。</p>\r
<h2>複数のルームの設置</h2>\r
<h2>プロファイルへのリンク方法</h2>\r
<p>chatclient.jsの$profile_linkをプロファイルの設定に合わせてください。何も設定を変えない場合は標準のプロファイルシステムを使用します</p>\r
<p>例:$profile_link=http://localhost/profile.cgi?name=%n</p>\r
+ <h2>プロフィールの管理</h2>\r
+ <p>[設置しているサーバー]/profile/adminにアクセスすることでプロフィールの管理を行うことができます</p>\r
+ <p>このページにある全削除ボタンを押した場合はすべてのプロフィールを削除することができ、削除ボタンを押した場合は選択したプロフィールを削除できます</p>\r
+ <p>注意!! このページからそれぞれのプロフィールにアクセスした場合、パスワードを入力せずに編集と削除を行うことができます</p>\r
<h2>コマンドの追加方法</h2>\r
<p>WebChatでは必要に応じて外部コマンドを追加することができます。追加する場合はchat.ejsのcommandparser.jsを呼び出している行よりも後に追加してください。そうでない場合、正常に動作しないことがあります</p>\r
<h2>プロフィールに項目を追加する方法</h2>\r