From 019cbbb6abc97c8407e6e63c9e006a7c3cd8d260 Mon Sep 17 00:00:00 2001 From: konekoneko Date: Sun, 28 Apr 2013 07:01:37 +0900 Subject: [PATCH] =?utf8?q?=E3=83=81=E3=83=A3=E3=83=83=E3=83=88=E3=81=AE?= =?utf8?q?=E7=AE=A1=E7=90=86=E3=83=9A=E3=83=BC=E3=82=B8=E3=82=92=E4=BD=BF?= =?utf8?q?=E3=81=84=E3=82=84=E3=81=99=E3=81=8F=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- chat.js | 73 ++++++++++++++++++------------------------- public/admin.ejs | 31 ++++++++++++++++-- public/scripts/adminclient.js | 2 +- readme.html | 15 ++++++--- 4 files changed, 70 insertions(+), 51 deletions(-) diff --git a/chat.js b/chat.js index d4fbadc..0b7e68e 100644 --- a/chat.js +++ b/chat.js @@ -82,7 +82,7 @@ function admin_postproc(req,res){ } if(typeof(req.body.updateroom) != "undefined") { - $rooms.Update(req.body.newroomlist,function(){ + $rooms.Update(req.body,function(){ res.redirect("/admin"); }); } @@ -101,7 +101,7 @@ function admin_proc(req,res) log_directory:$log_directory, ipbanlist:iplist, token:req.session._csrf, - roomlist:$rooms.GetString() + roomlist:$rooms.GetMessage() }); }); } @@ -143,17 +143,17 @@ function RoomInfomationCollection() this.IsContains = function(rno){ return rno in collection; }; - this.GetString = function(){ - var retval = ""; + this.GetMessage = function(){ + var retval = new Array(); for(var rno in collection) { - if($rooms.Get(rno).IsVolatile()) - continue; - var pass = collection[rno].password; - if(pass == null) - pass = ""; - var hiddenlog = collection[rno].hiddenlog; - retval += rno + ":" + pass + ":" + hiddenlog + "\r\n"; + item={}; + item.applyflag = !$rooms.Get(rno).IsVolatile(); + item.password = collection[rno].password; + if(item.password == null) + item.password = ""; + item.hiddenlog = collection[rno].hiddenlog; + retval.push(item); } return retval; }; @@ -165,46 +165,35 @@ function RoomInfomationCollection() } return retval; } - this.Update = function(text,callfunc){ + this.Update = function(data,callfunc){ Clear(); async.waterfall([ function(next){ pool.query("TRUNCATE TABLE rooms",null,next); }, function(result,next){ - lines = text.split("\r\n"); + console.log(util.inspect(data)); var items = new Array(); - for(var i = 0; i < lines.length; i++) + var config = data.config; + for(var i = 0; i < config.length; i++) { - if(lines[i] == "") + var rno = Number(config[i].applyflag); + if(isNaN(rno)) continue; - var token = lines[i].split(":"); - if(token.length == 1) - { - Add(token[0],null,false); - items.push(new Array(token[0],null,false)); - } - else if(token.length == 2) - { - var rno = token[0]; - var pass = token[1]; - if(pass == "") - pass = null; - Add(rno, pass,false); - items.push(new Array(token[0],pass,false)); - } - else if(token.length == 3) - { - var rno = token[0]; - var pass = token[1]; - if(pass == "") - pass = null; - var hiddenlog = false; - if(token[2] == "true") - hiddenlog = true; - Add(rno, pass,hiddenlog); - items.push(new Array(token[0],pass,hiddenlog)); - } + var password,romonly; + if(typeof(config[rno].password)=="undefined") + password = null; + else if(config[rno].password == "") + password = null; + else + password = config[rno].password; + if(typeof(config[rno].hiddenlog)=="undefined") + romonly = false; + else + romonly = config[rno].hiddenlog == "romonly"; + + Add(rno,password,romonly); + items.push(new Array(rno,password,romonly)); } pool.query("INSERT INTO rooms VALUES ?",[items],callfunc); } diff --git a/public/admin.ejs b/public/admin.ejs index 6b75fb8..a12a73d 100644 --- a/public/admin.ejs +++ b/public/admin.ejs @@ -52,9 +52,34 @@
-

ルームリスト

- -
+ + <% for(var i=0; i < roomlist.length; i++) {%> + + + + + + + <% } %> +
+ <% if(roomlist[i].applyflag) {%> + + <% }else{ %> + + <% } %> + + <%= i %> + + パスワード + + + ROM禁止 + <% if(roomlist[i].hiddenlog) {%> + + <% }else{ %> + + <% } %> +
diff --git a/public/scripts/adminclient.js b/public/scripts/adminclient.js index 63a8ea8..6872ca3 100644 --- a/public/scripts/adminclient.js +++ b/public/scripts/adminclient.js @@ -42,4 +42,4 @@ function SwitchItem(id) item.css("display","none"); } }); -} \ No newline at end of file +} diff --git a/readme.html b/readme.html index a8f92d1..552e519 100644 --- a/readme.html +++ b/readme.html @@ -52,12 +52,13 @@
  • mysql -u root -p < init.sqlを実行する
  • main.jsを起動する
  • -

    管理サイト

    -

    [設置しているサーバー]/adminとアドレスバーに入力することで管理用のページにアクセスできます

    +

    チャットの管理

    +

    [設置しているサーバー]/adminとアドレスバーに入力することでチャット管理用のページにアクセスできます

    このページではログの削除、アクセスを禁止するIPアドレスの設定、ルームの設定を行うことができます。

    -

    IPアドレスの設定時に「IPアドレス:r」とすることで読み取りを禁止し、「IPアドレス」だけを記述することで書き込みを禁止します。

    -

    ルームの設定では「部屋番号:パスワード」とすることで固定パスワードを設定し、「部屋番号」と記載することで利用者にパスワードを設定させることができます。また、「部屋番号::true」とした場合はROMを禁止することができます

    -

    また、[設置しているサーバー]/profile/adminと入力することでプロフィールを管理することができます

    +

    ipアドレスの設定

    +

    テキストエリアに「IPアドレス:r」と記述することで読み取りを禁止し、「IPアドレス」だけを記述することで書き込みを禁止することができます。

    +

    ルームの設定

    +

    部屋番号にチェックを入れた状態では最初に入室した人がパスワードを設定できるようになります。この状態でパスワードを入力した場合、パスワードを入力しないと入室できなくなります。パスワードを空欄にし、ROM禁止にチェックマークを付けた場合、入室している人を除いてチャットの内容を閲覧することができなくなります

    チャットルームへのアクセス

    アドレスバーに[設置しているサーバー]/chatと入力することでチャットルームにアクセスできます。

    複数のルームの設置

    @@ -69,6 +70,10 @@

    プロファイルへのリンク方法

    chatclient.jsの$profile_linkをプロファイルの設定に合わせてください。何も設定を変えない場合は標準のプロファイルシステムを使用します

    例:$profile_link=http://localhost/profile.cgi?name=%n

    +

    プロフィールの管理

    +

    [設置しているサーバー]/profile/adminにアクセスすることでプロフィールの管理を行うことができます

    +

    このページにある全削除ボタンを押した場合はすべてのプロフィールを削除することができ、削除ボタンを押した場合は選択したプロフィールを削除できます

    +

    注意!! このページからそれぞれのプロフィールにアクセスした場合、パスワードを入力せずに編集と削除を行うことができます

    コマンドの追加方法

    WebChatでは必要に応じて外部コマンドを追加することができます。追加する場合はchat.ejsのcommandparser.jsを呼び出している行よりも後に追加してください。そうでない場合、正常に動作しないことがあります

    プロフィールに項目を追加する方法

    -- 2.11.0