カレッヂ |
質問者 ぶんぶん
投稿日 2/2(金) 13:53:44
KENTさんのCOSMO GATE-EX(v2.54)のlog.datに入室社のホスト名を記録するやり方を教えて下さい。(もしくは、Honey BoardのログにIPアドレスを記録するやり方) 私は、KENTさんのHoney BoardにこのCOSMO GATE-EXを使ってアクセス制限をしているのですが、Honye BoardのログファイルにはIPアドレスが記録されない為、荒らし行為があったとき、どの会員が荒らし行為を行ったか分かりません。 この書き込みが注意事項に違反している事は分かっていますが、どの検索エンジンで検索しても情報は見付かりませんでした。 もう、ここしかないのです! 宜しくお願いします。 COSMO GATE-EXの設置場所 http://susuki.sakura.ne.jp/~lol/cgi-bin/bbs/honey/urabbs/gatex.cgi KENTさんのホームページ http://www.kent-web.com/ |
回答者 maeda
[削除]
投稿日 2/5(月) 14:06:41
こんにちは。 私はプロではないのでお役に立てるかわかりませんが。 Honey Board自体にはホストを所得するプログラムが書かれているのですが それでも取れないのでしょうか? どの会員のIPも取れない状況なのですか? こっちで試してみたのですが、ちゃんとIPが取れています。 # ホスト名取得に gethostbyaddr関数を使用 (0=no 1=yes) $gethostbyaddr = 1; の設定はちゃんとできているのでしょうか? |
回答者 羊
[削除]
投稿日 2/5(月) 17:57:31
>この書き込みが注意事項に違反している事は分かっていますが これはKENT-WEBでの話ですね。 ここでは大丈夫です。 あそこはサポート掲示板の規約を破ると ガラの悪い人達にボコボコにされるから。 |
質問者 ぶんぶん
[削除]
投稿日 2/7(水) 22:35:39
># ホスト名取得に gethostbyaddr関数を使用 (0=no 1=yes) >$gethostbyaddr = 1; Honey Boardでのホスト名取得は既にできているので、IPの取得をしたいのです。 $gethostbyaddrを1にしてもやはりIPの所得できませんでした。 おそらく、改造しないとIPの取得はできないと思うので、どなたかやり方を教えて下さい。 |
回答者 さくら
[削除]
投稿日 2/8(木) 01:18:31
私は、KENTさんのプログラムを見ていないので、一応、参考までに聞いてください。 まず、IPアドレスを取得するには、環境変数を使用する。 $addr = $ENV{'REMOTE_ADDR'} これで $addr にIPアドレスが入った。 皆さんの解答を見るところ、gethostbyaddr を使っているようなので、 そうすると、すでにIPアドレスは取得しているはずだ、ただ他の場所でIPアドレスを 使用していないだけだろう。なぜなら gethostbyaddr を使用してホスト名を取得するには 下記のような コードを使うからだ。 $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($host eq "") { $host = gethostbyaddr(pack('C4',split(/\./,$addr)),2) || $addr; } elsif ($host eq $addr) { $host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; } IPアドレスは0から255までの数値をドットで区切って4つ並べたものだ、 その最初の2つをpackしたもを gethostbyaddr の引数にして、ホスト名を取得しているのだ。 このような説明は必要無かったかもしれないが、貴方がやるべき事は、 プログラムのどこかで $ENV{'REMOTE_ADDR'} が使用されているかを探す事だ。 あれば、冒頭に書いたように変数に代入されているはずなので、その変数を使用できる。 又、ログファイルに書きこむには、ログファイルを読み書きしている箇所を探して、 IPアドレスの入った変数を追加しなければならないが、 ファイルの読み書きには、open を使用するのでそこをすべてチェックする。 ログファイルも変数に代入されている可能性が高いので、なんのファイルを読み書きしているか の確認も間違い無くすること。 bbsの場合、一般的には、1エントリーを1行にレコードするものだ。 その為、各データを join や split を使って、データを結合したり分割したりして 利用する。 データを増やす場合、そのへんの整合性を取らねばならないが データラインの一番最後に追加するのが良いだろう。 必ずしも、ここに示したような手法を使っているとは限らないので、 改造には充分注意して欲しい。 悪い副作用が起きずに成功する事を祈ります。 貴方の参考になれば幸いです。 |
返信(回答)する
Web裏技 |