#!/usr/bin/perl # ^^^^^^^^^^^^^ # ↑このpathは設置環境に合わせて変更してください. ;#-------------------------------------------------------------------------- ;# 携帯掲示板 "keitai-bbs" v1.10 ;# ;# (c)Copyright 2002-2006 by CGI-RESCUE ;# http://www.rescue.ne.jp/ ;# ;# 利用規定 〜 http://www.rescue.ne.jp/cgi/kitei.shtml ;# ;# [HISTORY] 〜設計履歴 ( )内は更新されたファイル ;# ・v1.00 JAN/19/2002 初版リリース(jSKY専用画面を除く→iMODE用画面を出力) ;# ・v1.01 JAN/23/2002 jSKYとWindowsCE向け出力を停止 ;# ・v1.02 MAR/07/2002 iframeが使えるブラウザでJavaScriptエラーが出る不具合を修正(keitai.cgi,web.cgi) ;# ・v1.10 MAR/29/2006 携帯判別方法を変更(keitai.cgi,imode.cgi) jsky.cgiとezweb.cgiは不要 ;# ;# [BUGS] 〜既知の問題点 ;# ・携帯端末において長いURLのブックマークが出来ないため、アドレスが長い場合 ;#  に名前等付きブックマークができない場合がある。(〜v1.01) ;#-------------------------------------------------------------------------- # 日本語コード変換ライブラリ 参考) http://www.rescue.ne.jp/cgi/faq4.shtml#FAQ53 require './jcode.pl'; # バータイトル $title = '出会い系サイトトラブル報告'; # マスターキー !必ず変更してください! $master_key = 'deaisagi'; # 終了先 (空欄でリンクなし) $bye_imode = 'http://www.deai-sagi.com/m/'; # 携帯用 $bye_web = 'http://www.deai-sagi.com/'; # Web用 # 一覧上部に挿入するデータ $head_imode = <<'EOF'; (携帯用) EOF $head_web = <<'EOF'; (Web用) EOF # データ保存場所(path) pathとはサーバ内部の位置関係を示す $base_dir = './data/'; # 最大記事維持件数 $max = 100; # このファイル名(http://から) $this_file = 'http://www.deai-sagi.com/m/cgi/bbs-1/keitai.cgi'; # 画像フォルダ名(URL) Webから見える位置。http://から記述してもよい。 $image_url = './images'; # 最後を/で閉じない # Web利用時に投稿記録を表示する $view_host = 1; ;#-------------------------------------------------------------------------- ;# 以下プログラム(改造は自己責任で) #--直接入力 foreach $pair (split(/&/,$ENV{'QUERY_STRING'})) { ($name,$value) = split(/=/,$pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $value =~ s/&/&/g; $value =~ s/"/"/g; $value =~ s//>/g; $value =~ s/\n//g; $value =~ s/\r//g; $value =~ s/\t//g; $query{$name} = $value; } if (!$query{'noiframe'}) { $TARGET = " target=keitai"; } #--標準入力 read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); foreach $pair (split(/&/,$buffer)) { ($name,$value) = split(/=/,$pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; &jcode'convert(*value,'sjis'); $value =~ s/&/&/g; $value =~ s/"/"/g; $value =~ s//>/g; $value =~ s/\r\n/\r/g; $value =~ s/\n/\r/g; $value =~ s/\t//g; $in{$name} = $value; } #-- 時刻取得 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); @wday_array = ('日','月','火','水','木','金','土'); $date_now = sprintf("%04d/%02d/%02d %02d:%02d:%02d",$year +1900,$mon +1,$mday,$hour,$min,$sec); $date_num = sprintf("%04d%02d%02d%02d%02d%02d",$year +1900,$mon +1,$mday,$hour,$min,$sec); #-- アクセス者データ $addr = $ENV{'REMOTE_ADDR'}; if ($host eq "" || $host eq $addr) { $host = gethostbyaddr(pack('C4',split(/\./,$addr)),2) || $addr; } $via = $ENV{'HTTP_VIA'}; $xfor = $ENV{'HTTP_X_FORWARDED_FOR'}; $for = $ENV{'HTTP_FORWARDED'}; $agent = $ENV{'HTTP_USER_AGENT'}; if ($agent) { $agent =~ s//)/g; } elsif ($ENV{'HTTP_WSER_AGENT'}) { $agent = 'Blocked by Norton'; } if ($via ne "") { $trueip = $xfor; } else { $trueip = $addr; } if ($xfor ne "") { $xfor_name = gethostbyaddr(pack('C4',split(/\./,$xfor)),2) || $xfor; } $access_log = "host;$host addr;$addr via;$via xfor;$xfor for;$for agent;$agent trueip;$trueip xfor_name;$xfor_name"; #--ブラウザ判別 if ($ENV{'HTTP_USER_AGENT'} =~ /UP\.Browser/ || $ENV{'HTTP_USER_AGENT'} =~ /J-PHONE/ || $ENV{'HTTP_USER_AGENT'} =~ /Vodafone/ || $ENV{'HTTP_USER_AGENT'} =~ /DoCoMo/) { $agent = 'iMODE'; require './imode.cgi'; } else { if ($agent =~ /(.+)\/(\d)\..*compatible\; MSIE (\d)\./) { $agent ="MSIE/$3 of $1/$2 compatible"; } elsif ($agent =~ /Mozilla\/(\d)\./) { $agent ="Mozilla/$1"; $query{'noiframe'} = 1; } else { $query{'noiframe'} = ""; } require './web.cgi'; } #--処理 if ($query{'cmd'} eq "read") { &read; } elsif ($query{'cmd'} eq "form") { &form; } elsif ($query{'cmd'} eq "confirm") { &confirm; } elsif ($query{'cmd'} eq "write") { &write; } elsif ($query{'cmd'} eq "delete") { &delete; } else { &list; } exit;