#!/usr/local/bin/perl $ver = 'BBSROOM TypeI'; # バージョン情報 #======================# # 設定するところ # #======================# # jcode.plが同一ディレクトリにある場合 require './jcode.pl'; require '../deny/deny.cgi'; require "../click/admgr.pl"; require './ad.cgi'; #広告を取得 #PC版ヘッダー&エラーページ表示 $add1_html = &admgr'get_ad('bbs', 'headertext'); #PC版フッター表示 $add2_html = &admgr'get_ad('bbs', 'footer'); $adi_html = &admgr'get_ad('bbs', 'docomo'); $ade_html = &admgr'get_ad('bbs', 'ezweb'); $ady_html = &admgr'get_ad('bbs', 'yahoo'); # 広告468挿入 $adprage = ''; # 広告text挿入 $adtprage = 'こちら'; sub init { # スクリプトファイル名 $script = "./pres.cgi?room=$room"; # ログファイル $logfile = "./user/$room\.log"; # 設定ファイル $setfile = "./user/$room\.dat"; # ロックファイル名 $lockfile = "./lock/$room\.lock"; # 管理ファイル $edtfile = "./edit.cgi?room=$room"; # 設定ファイル読み込み &open_set; } # キャラクタGIF画像のディレクトリを指定 $imgurl = "http://www.bbsroom.com/bbs/icon2"; # 壁紙のあるディレクトリ $gif_url = "http://www.bbsroom.com/bbs/icon2"; # 本文の文字大きさ(ポイント数:スタイルシートで有効) $b_size = '11pt'; # 本文の文字のタイプ $f_face= 'verdana,chicago,"MS Pゴシック"'; # アイコンを定義(上下は必ずペアで) @icon1 = ('icon01.gif','icon02.gif','icon03.gif','icon04.gif','icon05.gif','icon06.gif','icon07.gif','icon08.gif','icon09.gif','icon10.gif','icon11.gif','icon12.gif','icon13.gif','icon14.gif','icon15.gif','icon16.gif','icon17.gif','icon18.gif','icon19.gif','icon20.gif','icon21.gif','icon22.gif','icon23.gif','icon24.gif','icon25.gif'); @icon2 = ('ライオン','トナカイ','イヌ','ウシ','ヤギ','ゾウ','ネコ','サル','ヒツジ','ウサギ','ペンギン','アシカ','キツネ','リス','トラ','ワニ','アライグマ','メロン','カキ','イチゴ','スイカ','モモ','ブタ','ネズミ','クマ'); # 管理者専用アイコン機能 (0=no 1=yes) # --> 【使い方】記事投稿時に「管理者アイコン」を選択し、削除キーに # 「管理用パスワード」を入力して下さい。 $my_icon = 1; # 管理者専用アイコンの「ファイル名」を指定 $my_gif = 'admin.gif'; # アイコンモード (0=no 1=yes) $icon_mode = 1; #居住地の名前 @add1 = ('北海道','東 北','関 東','甲信越','東 海','北 陸','近 畿','中 国','四 国','九 州','沖 縄','海 外','不 明','ひみつ'); # 返信がつくと親記事をトップへ移動 (0=no 1=yes) $top_sort = 1; # ファイルロック形式 # --> 0=no 1=symlink関数 2=open関数 $lockkey = 1; # 自動リンク (0=no 1=yes) $autolink = 1; # Eメールアドレスの必須入力 (0=no 1=yes) $in_email = 0; # 家アイコンの使用 (0=no 1=yes) $home_icon = 1; $home_gif = "home.gif"; # 家アイコンのファイル名 $home_wid = 25; # 画像の横サイズ $home_hei = 25; # 〃 縦サイズ # メールアイコンの使用 (0=no 1=yes) $mail_icon = 1; $mail_gif = "mail.gif"; # MAILアイコンのファイル名 $mail_wid = 25; # 画像の横サイズ $mail_hei = 25; # 〃 縦サイズ # 1ページ当たりの記事表示数 (親記事) $p_log = 5; # sendmailパス(メール通知する時) $sendmail = '/usr/lib/sendmail'; # 他サイトから投稿排除する場合 (http://から書く) $base_url = "http://www.bbsroom.com/cgi-local/bbs2/pres.cgi"; # 日本語チェック $jp_wd = 1; # 文字色の設定。 @COLORS = ('#4b6b8f','#4e60b4','#408080','#4b965c','#89669b','#a26faa','#c95a6b','#e67531'); # 記事表示部等の枠の色(レスが付いたときのラインの色もこの色が反映されます) # この色はユーザーが設定しない場合にのみ反映されます。 $tt_color = "#f0f7fb"; #記事を書きこむときなどのSubmitボタンの背景色 # この色はユーザーが設定しない場合にのみ反映されます。 $sb_col = "#d1e0ef"; #記事を書きこむときなどのSubmitボタンの文字色 # この色はユーザーが設定しない場合にのみ反映されます。 $sb_fcol = "#4681a4"; #記事表示部の横幅サイズに関する設定(ピクセルまたは%で) $waku_w = '550'; #記事全体の横幅サイズ # 投稿フォーム改行形式 (soft=手動 hard=強制) $wrap = 'soft'; $banner1 = ''; # 掲示板上部に挿入 $hikoukoku = 'isample';# 非広告ユーザ # webdo CROOZ メガバナー エラーページ表示 ##-------- パラメータのセット ------- my $partner_id = 7318; #パートナーID(数値) my $strQuery = ""; #キーワード(エンコード等していない文字列) my $ad_number = 1; #取得広告数(数値) my $allow_unmutched = "Y"; #マッチングしない広告の許可(Y/N) my $segment = "0,0"; #ユーザー情報(例:30歳男性) ##----------------------------------- my $ret = CROOZ::crooz_ad( $partner_id, $strQuery,3, $ENV{'REMOTE_ADDR'}, $ENV{'HTTP_USER_AGENT'}, $allow_unmatched, $segment, $ENV{'HTTP_X_DCMGUID'}, $ENV{'HTTP_X_UP_SUBNO'}, $ENV{'HTTP_X_JPHONE_UID'} ); # アクセス解析 $analytics = ' '; # アクセス制限(半角スペースで区切る、アスタリスク可) # → 拒否ホスト名を記述(後方一致)【例】*.anonymizer.com $deny_host = ''; # → 拒否IPアドレスを記述(前方一致)【例】210.12.345.* $deny_addr = '202.105.* 123.156.* 101.66.* 175.44.* 112.111.* 36.248.* 58.48.* 178.32.* 192.74.250.* 188.165.* 60.182.* 121.8.* 61.152.170.* 210.13.101.* 116.16.* 116.224.* 58.35.* 124.76.* 59.56.* 113.64.* 220.170.32.* 222.245.* 222.184.* 118.248.* 59.136.166.* 58.32.* 58.60.* 59.56.* 59.32.* 60.160.* 60.161.* 60.164.* 60.178.* 60.181.* 61.130.* 61.134.0.* 61.140.* 61.141.* 61.144.* 61.145.* 61.146.* 61.154.* 61.157.* 61.173.* 61.177.* 61.178.* 61.180.* 61.183.* 61.145.* 121.224.* 121.236.* 124.114.* 124.72.* 125.73.* 125.74.* 125.88.* 125.118.* 218.13.* 218.63.* 218.64.* 218.65.* 218.77.* 218.78.* 218.80.* 218.81.* 218.83.* 218.86.* 218.87.* 218.88.* 218.90.* 218.94.* 219.128.* 219.129.* 219.130.* 219.131.* 219.132.* 219.133.* 219.134.* 219.135.* 219.136.* 219.137.* 219.144.* 219.152.* 219.153.* 220.163.* 220.164.* 220.165.* 220.173.* 220.174.* 220.175.* 220.176.* 220.184.* 220.188.* 221.225.* 221.227.* 221.229.* 221.232.* 221.235.* 222.170.* 220.175.* 222.184.* 222.186.* 222.187.* 222.188.* 222.189.* 222.208.* 222.210.* 222.212.* 222.213.* 222.214.* 222.216.* 222.217.* 222.218.* 222.64.* 222.71.* 222.76.* 222.79.* 222.84.* 222.94.* 121.204.* 61.159.214.* 59.40.* 125.80.* 125.88.* 58.37.* 222.170.* 59.52.* 218.78.* 220.187.128.* 222.170.* 218.19.* 222.170.* 124.236.* 121.32.* 60.182.* 222.208.* 116.199.64.* 125.88.* 121.56.* 114.224.* 183.* 123.152.* 218.19.* 117.80.* 119.128.* 124.228.* 125.113.* 5.39.112.* 60.182.159.* 60.182.157.* 125.112.* 218.72.* 14.23.* 168.62.*'; # → 携帯IPアドレスを記述(前方一致)【例】210.12.345.* # アクセス制限(半角スペースで区切る、アスタリスク可) $mobileip = ''; #======================# #   設定完了    # #======================# ## --- メイン処理 &decode; &init; &axscheck; if ($mode eq 'regist') { ®ist; } if ($mode eq 'find') { &find; } if ($mode eq 'howto') { &howto; } if ($mode eq 'enter') { &enter; } if ($mode eq 'admin') { &admin; } if ($mode eq 'usrdel') { &usrdel; } if ($mode eq 'res') { &res_msg; } if ($mode eq 'image') { ℑ } if ($mode eq 'formtel') { &formtel; } &html; ## --- 設定ファイル認識 sub open_set { local($type); unless (-e $setfile) { &error1("指定された掲示板はありません。"); } else { open(IN,"$setfile") || &error1("Open Error : \$setfile"); $SetData = ; close(IN); } ($type,$title,$t_size,$t_color,$t_face,$t_gif,$home,$b_gif,$in_col,$in_fcol,$bgcolor,$text,$link,$vlink,$alink,$max,$mail,$pw,$sub_color,$tbl_color,$waku_color,$deny) = split(/<>/, $SetData); # 記事題名の色とテーブル下地の色をデフォルト定義 if (!$sub_color) { $sub_color = $t_color; } if (!$tbl_color) { $tbl_color = "FFFFFF"; } if (!$waku_color) { $waku_color = $tt_color; } if (!$in_col) { $in_col = $sb_col; } if (!$in_fcol) { $in_fcol = $sb_fcol; } # アクセス拒否 if ($deny) { &get_host; @DENY = split(/\s+/, $deny); $dflag=0; foreach (@DENY) { if ($host =~ /$_/i) { $dflag=1; last; } } if ($dflag) { &error("現在アクセスできません。"); } } } #------------------------------------------------- # アクセス制限 #------------------------------------------------- sub axscheck { # IP&ホスト取得 $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($gethostbyaddr && ($host eq "" || $host eq $addr)) { $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2); } # IPチェック local($flg); foreach ( split(/\s+/, $deny_addr) ) { s/\./\\\./g; s/\*/\.\*/g; if ($addr =~ /^$_/i) { $flg = 1; last; } } if ($flg) { &error("アクセスを許可されていません"); # ホストチェック } elsif ($host) { foreach ( split(/\s+/, $deny_host) ) { s/\./\\\./g; s/\*/\.\*/g; if ($host =~ /$_$/i) { $flg = 1; last; } } if ($flg) { &error("アクセスを許可されていません"); } } if ($host eq "") { $host = $addr; } } #----------------# # 記事表示処理 # #----------------# sub html { &header; # タイトル部 print "
\n"; if ($banner1 ne "") { print "$banner1

\n"; } if ($imode =~ /1|2|3/) { print ""; print "$title
\n"; } if ($imode == 0) { if ($t_gif) { print "$title\n"; print "

\n"; } else { print ""; print "$title\n"; print "

\n"; } } print <<"EOM";
重要なお知らせ
EOM if ($imode == 1) { &jcode'convert(*adi_html,'sjis'); print "$adi_html\n"; } if ($imode == 2) { &jcode'convert(*ady_html,'sjis'); print "$ady_html\n"; } if ($imode == 3) { &jcode'convert(*ade_html,'sjis'); print "$ade_html\n"; } if ($imode =~ /1|2|3/) { print "


\n"; print "$emo1新規投稿
\n"; } if ($imode == 0) { print "[HOME]\n"; print "[HOW TO]\n"; print "[SEARCH]\n"; # ログファイルのサイズを取得 広告を消す $size = -s "$logfile"; if ($size < 1000) {} elsif ($room eq $hikoukoku) {} else { #&jcode'convert(*add1_html,'sjis'); #print "[$add1_html] \n"; print "[$adtprage] \n"; } print <<"EOM"; [ADMIN]

EOM # フォームを表示 &form_view; print "
\n"; } # ページ区切り処理 $start = $page + 1; $end = $page + $p_log; open(IN,"$logfile") || &error("Open Error : $logfile"); $top = ; $i=0; $j=0; while ($_ = ) { ($no,$reno,$date,$name,$mail,$sub, $com,$url,$add,$host,$pw,$color,$icon) = split(/<>/, $_); if ($reno eq "") { $i++; $j++; } if ($i < $start) { next; } if ($i > $end) { next; } if ($imode =~ /1|2|3/) { } if ($imode == 0) { if ($mail_icon && $mail) { $mail = "MAIL"; } elsif (!$mail_icon && $mail) { $mail = "<MAIL>"; } if ($home_icon && $url) { $url = "WEB"; } elsif (!$home_icon && $url) { $url = "<WEB>"; } if (!$icon_mode) { $com = "
$com
"; } if ($home_icon) { $hm_wid = $home_wid + $mail_wid + 20; } if (!$reno && $flag) { print "

\n"; $flag=1; } } if (!$reno) { if ($imode =~ /1|2|3/) { } if ($imode == 0) { print "
\n"; print "
\n"; $flag=1; } } if ($imode =~ /1|2|3/) { if (!$reno) { print "
\n"; print "[NO.$no]$sub
\n"; if ($mail) { $name = "$name"; } print "$name"; print "[$add]
\n"; print "$date\n"; } else {} } if ($imode == 0) { if ($reno) { print "
\n"; } print "\n"; if ($reno) { print ""; } print "\n"; } else { print "
\n"; } print "

$sub "; print "FROM:$name [$add] "; print "\n"; if (!$reno) { print "
\n"; print "\n"; print "\n"; print "\n"; print "
\n"; if ($reno) { print "\n"; } } # アイコンモード if ($imode =~ /1|2|3/) { } if ($imode == 0) { if ($icon_mode) { print ""; } print "

$com"; print "
\n"; print "
\n"; print "DATE:$date \n"; print "No\.$no $mail $url
\n"; } } close(IN); if ($imode =~ /1|2|3/) { } if ($imode == 0) { print "
\n"; } print "

\n"; if ($imode == 1) { print "
\n"; &jcode'convert(*adi_html,'sjis'); print "$adi_html\n"; } if ($imode == 2) { print "
\n"; &jcode'convert(*ady_html,'sjis'); print "$ady_html\n"; } if ($imode == 3) { print "
\n"; &jcode'convert(*ade_html,'sjis'); print "$ade_html\n"; } if ($imode =~ /1|2|3/) { print "
\n"; print "

\n"; } if ($imode == 0) { print "

\n"; } $next_page = $page + $p_log; $back_page = $page - $p_log; if ($imode =~ /1|2|3/) { if ($back_page >= 0) { print "$emo2前ページ
\n"; } if ($next_page < $i) { print "$emo3次ページ\n"; } } if ($imode == 0) { print "
\n"; if ($back_page >= 0) { print "\n"; } if ($next_page < $i) { print "\n"; } print "
\n"; print "\n"; print "\n"; print " \n"; print "
\n"; print "\n"; print "\n"; print " \n"; print "
\n"; # 著作権表示部 print "
\n"; } if ($imode =~ /1|2|3/) { print "\n"; } if ($imode == 0) { # ログファイルのサイズを取得 広告を消す $size = -s "$logfile"; if ($size < 1000) {} elsif ($room eq $hikoukoku) {} #else {print "$googlei\n";} else { #&jcode'convert(*add2_html,'sjis'); #print "$add2_html\n"; print "$adprage\n"; } print "

\n"; print "

\n"; print "\n"; print "
\n"; print "\n"; print "\n"; print "+ DELETE FORM +
\n"; print "NO\n"; print "DELETE KEY\n"; print "\n"; print "

\n"; } if ($imode =~ /1|2|3/) { print "
\n"; print "
BBSROOM\n"; print "
\n"; } if ($imode == 0) { print "

\n"; print "- BBSROOM -
"; print "- Script:KENT WEB -\n"; print " Edit:PRETTY BOOK -\n"; print " PRAGE -
\n"; print "- 30代SNS - プラージュ - 名刺印刷 - FortiGate -\n"; print "

\n"; print "

\n"; print "BBSROOM\n"; print "

\n"; print "\n"; } exit; } #----------------# # 書きこみ処理 # #----------------# sub regist { if ($imode == 0) { # 他サイトからのアクセスを排除 if ($base_url) { $ref_url = $ENV{'HTTP_REFERER'}; $ref_url =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; if ($ref_url !~ /$base_url/i) { &error("不正なアクセスです"); } } } #if ($imode =~ /1|2|3/) { # &get_host; # 携帯IPチェック # my $flg; # foreach ( split(/\s+/, $mobileip) ) { # s/\./\\\./g; # s/\*/\.\*/g; # if ($addr =~ /^$_/i) { # last; # } # else { # $flg = 1; # last; # } # } # if ($flg) { # &error("書き込みができませんでした。"); # } # if ($host eq "") { $host = $addr; } #} # フォーム内容をチェック if ($name eq "") { &error("名前が入力されていません"); } if ($com eq "") { &error("コメントが入力されていません"); } if ($in_email && $email !~ /(.+)\@(.+)\.(.+)/) { &error("メールアドレスの入力が不正です"); } # 禁止ワードチェック if ($deny_word) { &deny_word($FORM{'name'}); &deny_word($FORM{'email'}); &deny_word($FORM{'url'}); &deny_word($FORM{'sub'}); &deny_word($FORM{'com'}); } # 日本語チェック if ($jp_wd) { &jp_wd; } # 管理アイコンのチェック if ($my_icon && $icon eq "$my_gif") { $check = &d_passwd("$FORM{'pwd'}","$pw"); if ($check ne "yes") { &error("管理用アイコンは管理者専用です"); } } # ホスト名を取得 &get_host; # ロック処理 if ($lockkey == 1) { &lock1; } elsif ($lockkey == 2) { &lock2; } open(IN,"$logfile") || &error("Open Error : $logfile","lock"); @lines = ; close(IN); $top = shift(@lines); $match=0; foreach (@lines) { local($tno,$treno,$tdate,$tname,$tmail,$tsub,$tcom) = split(/<>/, $_); if ($name eq "$tname" && $com eq "$tcom") { $match=1; last; } } if ($match) { &error("二重投稿は禁止です","lock"); } # 記事Noを採番 $top =~ s/\n//; $no = $top + 1; # 削除キーを暗号化 if ($FORM{'pwd'}) { $PW = &e_passwd($FORM{'pwd'}); } # URL自動リンク if ($autolink) { &auto_link($com); } # 親記事の場合 if ($FORM{'reno'} eq "") { # 最大記事数処理 while ($max <= @lines) { pop(@lines); } unshift(@lines,"$no<><>$date<>$name<>$email<>$sub<>$com<>$url<>$add<>$host<>$PW<>$color<>$icon<>\n"); unshift(@lines,"$no\n"); # 更新 open(OUT,">$logfile") || &error("Write Error : $logfile","lock"); print OUT @lines; close(OUT); } # レス記事の場合:トップソートあり elsif ($FORM{'reno'} && $top_sort) { $match=0; @new=(); @tmp=(); foreach (@lines) { ($no2,$reno2,$dm,$dm,$dm,$dm,$dm,$dm,$dm,$dm,$dm,$dm,$dm) = split(/<>/, $_); if ($FORM{'reno'} eq "$no2") { $match=1; push(@new,$_); } elsif ($FORM{'reno'} eq "$reno2") { push(@new,$_); } elsif ($match == 1 && $FORM{'reno'} ne "$reno2") { $match=2; push(@new,"$no<>$FORM{'reno'}<>$date<>$name<>$email<>$sub<>$com<>$url<>$add<>$host<>$PW<>$color<>$icon<>\n"); push(@tmp,$_); } else { push(@tmp,$_); } } if ($match == 1) { push(@new,"$no<>$FORM{'reno'}<>$date<>$name<>$email<>$sub<>$com<>$url<>$add<>$host<>$PW<>$color<>$icon<>\n"); } push(@new,@tmp); # 更新 unshift(@new,"$no\n"); open(OUT,">$logfile") || &error("Write Error : $logfile","lock"); print OUT @new; close(OUT); } # レス記事の場合:トップソートなし else { $match=0; @new=(); foreach (@lines) { ($no2,$reno2,$dm,$dm,$dm,$dm,$dm,$dm,$dm,$dm,$dm,$dm,$dm) = split(/<>/, $_); if ($match == 0 && $FORM{'reno'} eq "$no2") { $match=1; } elsif ($match == 1 && $FORM{'reno'} ne "$reno2") { $match=2; push(@new,"$no<>$FORM{'reno'}<>$date<>$name<>$email<>$sub<>$com<>$url<>$add<>$host<>$PW<>$color<>$icon<>\n"); } push(@new,$_); } if ($match == 1) { push(@new,"$no<>$FORM{'reno'}<>$date<>$name<>$email<>$sub<>$com<>$url<>$add<>$host<>$PW<>$color<>$icon<>\n"); } # 更新 unshift(@new,"$no\n"); open(OUT,">$logfile") || &error("Write Error : $logfile","lock"); print OUT @new; close(OUT); } # ロック解除 if (-e $lockfile) { unlink($lockfile); } if ($FORM{'cook'} eq 'on') { &set_cookie; } # メール処理 if ($mail ne "") { &mail_to; } if ($imode == 1) { &header; print "
\n"; &jcode'convert(*adi_html,'sjis'); print "$adi_html\n"; } if ($imode == 2) { &header; print "
\n"; &jcode'convert(*ady_html,'sjis'); print "$ady_html\n"; } if ($imode == 3) { &header; print "
\n"; &jcode'convert(*ade_html,'sjis'); print "$ade_html\n"; } # 携帯完了メッセージ if ($imode =~ /1|2|3/) { print "

\n"; print "正常に受理しました\n"; print "

\n"; print "掲示板に戻る\n"; print "
\n"; print "\n"; exit; } } #--------------# # ワード検索 # #--------------# sub find { &header; print <<"HTML"; [BACK]

SEARCH

HTML # 文字コード変換 &jcode'convert(*ad1_html,'sjis'); print "$ad1_html\n"; print <<"HTML";

  • 検索したいキーワードを入力し、検索領域を選択して「検索ボタン」を押してください。
  • キーワードは「半角スペース」で区切って複数指定することができます。

キーワード
検索条件 AND OR
HTML # ワード検索の実行と結果表示 if ($FORM{'word'} ne "") { # 入力内容を整理 $cond = $FORM{'cond'}; $word = $FORM{'word'}; $word =~ s/ / /g; $word =~ s/\t/ /g; @pairs = split(/ /,$word); # 検索処理 print "

    \n"; open(IN,"$logfile") || &error("Open Error : $logfile"); $top = ; $i=0; while ($_ = ) { $flag = 0; foreach $pair (@pairs) { if (index($_,$pair) >= 0) { $flag=1; if ($cond eq 'or') { last; } } else { if ($cond eq 'and') { $flag = 0; last; } } } if ($flag == 0) { next; } # 結果を表示 $i++; ($no,$reno,$date,$name,$mail,$sub, $com,$url,$add,$host,$pw,$color,$icon) = split(/<>/, $_); if ($mail) { $name = "$name"; } if ($url) { $url = "http://$url"; } print "
  1. [$no] From:$name [$add] Date:$date
    \n"; print "
    $com

    $url


    \n"; } close(IN); print "
    検索結果は $i件です。
    \n"; print "
\n"; } print "

\n"; print "



\n"; print "BBSROOM\n"; print "

\n"; exit; } #----------------# # 管理入室画面 # #----------------# sub enter { &header; print <<"EOM"; [BACK]
WEB MASTER ONLY


EOM # 文字コード変換 &jcode'convert(*ad1_html,'sjis'); print "$ad1_html\n"; print <<"EOM";


記事内容管理
 
環境設定
 

$kugiri



BBSROOM

EOM exit; } #--------------# # 管理モード # #--------------# sub admin { $check = &d_passwd("$FORM{'pass'}","$pw"); if ($check ne "yes") { &error("パスワードが違います"); } &header; print "[BACK]\n"; print <<"EOM";
WEB MASTER ONLY
EOM print "
\n"; # 削除処理 if ($DEL[0]) { # ロック処理 if ($lockkey == 1) { &lock1; } elsif ($lockkey == 2) { &lock2; } # 削除情報をマッチングし更新 @new=(); open(IN,"$logfile") || &error("Open Error : $logfile","lock"); $top = ; while ($_ = ) { $flag=0; ($no,$reno,$date) = split(/<>/, $_); foreach $del (@DEL) { if ($no eq "$del" || $reno eq "$del") { $flag=1; last; } } if ($flag == 0) { push(@new,$_); } } close(IN); # 更新 unshift(@new,$top); open(OUT,">$logfile") || &error("Write Error : $logfile","lock"); print OUT @new; close(OUT); # ロック解除 if (-e $lockfile) { unlink($lockfile); } } # 管理を表示 if ($page eq "") { $page = 0; } print "

\n"; print "
\n"; # 文字コード変換 &jcode'convert(*ad1_html,'sjis'); print "$ad1_html\n"; print "
\n"; print "
\n"; print "
  • 削除する記事のチェックボックスにチェックを入れボタンを押して下さい。\n"; print "
  • 親記事を削除するとレス記事も削除されます。
\n"; print "
\n"; print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print ""; print " \n"; print "

\n"; print ""; print "\n"; # ページ区切り処理 $start = $page + 1; $end = $page + $p_log; open(IN,"$logfile") || &error("Open Error : $logfile"); $top = ; $i=0; $j=0; while ($_ = ) { ($no,$reno,$date,$name,$mail,$sub, $com,$url,$add,$host,$pw,$color,$icon) = split(/<>/, $_); if ($reno eq "") { $i++; $j++; } if ($i < $start) { next; } if ($i > $end) { next; } if ($mail) { $name="$name"; } ($date,$dmy) = split(/\(/, $date); if ($url) { $url = "[Web]"; } else { $url = '-'; } $com =~ s/
//ig; $com =~ s//>/g; if (length($com) > 50) { $com = substr($com,0,48); $com = "$com" . "..."; } if ($reno eq "") { print "
\n"; } # 削除チェックボックス print ""; print ""; print ""; print ""; print "\n"; } close(IN); print "\n"; print "
削除記事NO投稿日TITLE投稿者URLCOMMENTHOST

$no$date$sub$name$url$com$host

\n"; print "
\n"; print "
\n"; $next_page = $page + $p_log; $back_page = $page - $p_log; print "

\n"; if ($back_page >= 0) { print "\n"; } if ($next_page < $i) { print "\n"; } print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
\n"; print "\n"; exit; } #--------------------# # 返信レスフォーム # #--------------------# sub res_msg { &header; if ($imode == 1) { print "[Back]

\n"; print "

\n"; &jcode'convert(*adi_html,'sjis'); print "$adi_html\n"; } if ($imode == 2) { print "[Back]

\n"; print "
\n"; &jcode'convert(*ady_html,'sjis'); print "$ady_html\n"; } if ($imode == 3) { print "[Back]

\n"; print "
\n"; &jcode'convert(*ade_html,'sjis'); print "$ade_html\n"; } if ($imode =~ /1|2|3/) { print "
\n"; } if ($imode == 0) { print <<"EOM"; [BACK]

EOM # 文字コード変換 &jcode'convert(*ad1_html,'sjis'); print "$ad1_html\n"; print <<"EOM";

RES FORM


EOM } open(IN,"$logfile") || &error("Open Error : $logfile"); $top = ; while ($_ = ) { ($no,$reno,$date,$name,$mail,$sub, $com,$url,$add,$host,$pw,$color,$icon) = split(/<>/, $_); if ($FORM{'no'} eq "$no" || $FORM{'no'} eq "$reno") { if ($mail) { $name = "$name"; } if ($url) { $url = "[WEB]"; } # レス題名用 if ($reno eq "") { $res_sub = "Re: $sub"; } if ($imode =~ /1|2|3/) { print "
\n"; print "[NO.$no]$sub
\n"; if ($mail) { $name = "$name"; } print "$name"; print "[$add]
\n"; print "$date
\n"; print "$com\n"; print "
\n"; } if ($imode == 0) { print "
\n"; print "$sub From:$name - $date $url

\n"; print "

$com

\n"; print "
\n"; } } } close(IN); if ($imode =~ /1|2|3/) { print "
\n"; print ""; print "返信投稿
\n"; if ($imode == 1) { &jcode'convert(*adi_html,'sjis'); print "$adi_html\n"; } if ($imode == 2) { &jcode'convert(*ady_html,'sjis'); print "$ady_html\n"; } if ($imode == 3) { &jcode'convert(*ade_html,'sjis'); print "$ade_html\n"; } print "
\n"; print "
\n"; print "□[Back]\n"; print "
\n"; print "
\n"; print "\n"; print <<"EOM"; NAME

MAIL

URL

TITLE

COMMENT

COLOR
EOM print "
\n"; print "AREA
\n"; print "
\n"; if ($my_icon) { push(@icon1,"$my_gif"); push(@icon2,"管理者用"); } print "ICON
\n"; print "
\n"; print<<"EOM"; DELETE

WRITE

絵文字と半角カナは文字化けの原因となりますので投稿しないでください。
EOM print "
\n"; print "
BBSROOM\n"; } if ($imode == 0) { print "

\n"; &form_view("$FORM{'no'}"); print "

\n"; print "



\n"; print "BBSROOM\n"; } print "

\n"; print "\n"; exit; } #--------------# # 使い方表示 # #--------------# sub howto { &header; print <<"EOM"; [BACK]


EOM # 文字コード変換 &jcode'convert(*ad1_html,'sjis'); print "$ad1_html\n"; print <<"EOM";



HOW TO USE

  1. この掲示板はクッキー対応です。1度記事を投稿いただくと、NAME、MAIL、URL、AREA、DELETE KEYの情報は2回目以降は自動入力されます。(ただし利用者のブラウザがクッキー対応の場合)

  2. 投稿内容には、タグは一切使用できません。

  3. 記事を投稿する上での必須入力項目は「NAME」「COMMENT」です。MAIL、URL、AREA、TITLE、DELETE KEYは任意です。

  4. 記事には、半角カナは一切使用しないで下さい。文字化けの原因となります。

  5. 記事の投稿時に「DELETE」にパスワード(英数字で8文字以内)を入れておくと、その記事は次回DELETE KEYによって削除することができます。

  6. 記事の保持件数は最大 $max件です。それを超えると古い順に自動削除されます。

  7. 既存の記事に「返信」をすることができます。各記事の上部にある「RES」ボタンを押すと返信用フォームが現れます。

  8. i-mode、EZweb、Vodafone Live!からも参照及び投稿することができます。

  9. 過去の投稿記事から「キーワード」によって簡易検索ができます。トップメニューの「SEARCH」のリンクをクリックすると検索モードとなります。

  10. 管理者が著しく不利益と判断する記事や他人を誹謗中傷する記事は予\告なく削除することがあります。



BBSROOM

EOM exit; } #------------------# # ユーザ記事削除 # #------------------# sub usrdel { if ($FORM{'no'} eq '' || $FORM{'pwd'} eq '') { &error("削除Noまたは削除キーが入力モレです"); } # ロック処理 if ($lockkey == 1) { &lock1; } elsif ($lockkey == 2) { &lock2; } open(IN,"$logfile") || &error("Open Error : $logfile"); @lines = ; close(IN); $top = shift(@lines); $flag=0; foreach (@lines) { ($no,$reno,$date,$name,$mail,$sub, $com,$url,$add,$host,$pw,$color,$icon) = split(/<>/, $_); if ($flag == 0 && $FORM{'no'} eq "$no") { $PW = $pw; if ($reno eq "") { $flag=2; } else { $flag=1; } } elsif ($flag == 2 && $FORM{'no'} eq "$reno") { next; } else { push(@new,$_); } } if ($flag == 0) { &error("該当記事が見当たりません","lock"); } if ($PW eq '') { &error("該当記事には削除キーが設定されていません","lock"); } # 削除キーを照合 $match = &d_passwd("$FORM{'pwd'}","$PW"); if ($match ne 'yes') { &error("削除キーが違います","lock"); } else { # 更新 unshift(@new,$top); open(OUT,">$logfile") || &error("Write Error : $logfile","lock"); print OUT @new; close(OUT); # ロック解除 if (-e $lockfile) { unlink($lockfile); } } } ## --- フォームからのデータ処理 sub decode { if ($ENV{'REQUEST_METHOD'} eq "POST") { if ($ENV{'CONTENT_LENGTH'} > 51200) { &error("投稿量が大きすぎます"); } read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($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; # 改行処理 if ($name eq 'com') { $value =~ s/\r\n/
/g; $value =~ s/\r/
/g; $value =~ s/\n/
/g; } else { $value =~ s/\r//g; $value =~ s/\n//g; } # 削除情報 if ($name eq 'del') { push(@DEL,$value); } $FORM{$name} = $value; } $name = $FORM{'name'}; $com = $FORM{'com'}; $email = $FORM{'email'}; $sub = $FORM{'sub'}; if ($sub eq "") { $sub = "No Title"; } $url = $FORM{'url'}; $url =~ s/^http\:\/\///; $mode = $FORM{'mode'}; $pwd = $FORM{'pwd'}; $page = $FORM{'page'}; $add = $FORM{'add'}; $color = $FORM{'color'}; $icon = $FORM{'icon'}; $room = $FORM{'room'}; $room =~ s/\W//g; # 日時の取得 $ENV{'TZ'} = "JST-9"; ($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime(time); # 日時のフォーマット @week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); $date = sprintf("%04d\/%02d\/%02d(%s) %02d\:%02d", $year+1900,$mon+1,$mday,$week[$wday],$hour,$min); # ブラウザ判別 $agent = $ENV{"HTTP_USER_AGENT"}; if ($agent =~ /DoCoMo/i){# i-mode $imode=1; $method = 'post'; $button = 'accesskey'; $emo1 = '驪'; $emo2 = '麗'; $emo3 = '黎'; $emo4 = '力'; $emo5 = '曆'; $value =~ s/<>/<>/g; $meta = ''; $meta2 = ''; $meta3 = ''; } elsif ($agent =~ /^MOT\-|J\-PHONE|SoftBank|Vodafone/i) {# J-Sky $imode=2; $method = 'get'; $button = 'DIRECTKEY'; $emo1 = pack('H2H2','1B','24') . 'F' . pack('H2','3c') . pack('H2','0F'); $emo2 = pack('H2H2','1B','24') . 'F' . pack('H2','3d') . pack('H2','0F'); $emo3 = pack('H2H2','1B','24') . 'F' . pack('H2','3e') . pack('H2','0F'); $emo4 = pack('H2H2','1B','24') . 'F' . pack('H2','3f') . pack('H2','0F'); $emo5 = pack('H2H2','1B','24') . 'F' . pack('H2','40') . pack('H2','0F'); $meta = ''; $meta2 = ''; $meta3 = ''; } elsif ($agent =~ /UP\.Browser/i) {# EZweb $imode=3; $method = 'get'; $button = 'accesskey'; $emo1 = ''; $emo2 = ''; $emo3 = ''; $emo4 = ''; $emo5 = ''; $meta = ''; $meta2 = ''; $meta3 = ''; } else { $imode=0;# PC $meta = ''; $meta2 = ''; $meta3 = ''; } } #--------------# # HTMLヘッダ # #--------------# sub header { $HEAD = 1; # ヘッダ表示フラグ # print "Content-type: text/html\n\n"; print "Content-type: text/html\n"; # クライアントが gzip を許可するか全てOKの場合、gzipを利用する。 if($ENV{HTTP_ACCEPT_ENCODING} =~ /gzip/i || $ENV{HTTP_ACCEPT_ENCODING} =~ /\*/) { print "Content-Encoding: gzip\n\n"; open GZIP, "| /bin/gzip -1 -c" or die; open STDOUT, ">&GZIP"; } else { print "\n"; } print <<"EOM"; $meta $meta2 $meta3 $title EOM if ($imode =~ /1|2|3/) { print "\n"; } if ($imode == 0) { print <<"EOM"; EOM # bodyタグ if ($b_gif) { print "\n"; } else { print "\n"; } print "$analytics\n"; } } #------------------------------------# # ブラウザ情報からフォーム長を定義 # #------------------------------------# sub get_agent { $agent = $ENV{'HTTP_USER_AGENT'}; if ($agent =~ /MSIE/i) { $nam_wid = 35; $sub_wid = 35; $com_wid = 42; } else { $nam_wid = 20; $sub_wid = 20; $com_wid = 32; } } #--------------# # エラー処理 # #--------------# sub error { if ($_[1] eq "lock" && -e $lockfile) { unlink($lockfile); } if ($HEAD eq "") { &header; } print "

ERROR !

\n"; print "

$_[0]\n"; if ($imode =~ /1|2|3/) { print "

BBSROOM\n"; } if ($imode == 0) { print "

BBSROOM\n"; } print "



\n"; if ($imode == 1) { use strict; use CROOZ; if(length($ret) > 0){ print $ret; }else{ # print "$fkei\n"; } } if ($imode == 2) { use strict; use CROOZ; if(length($ret) > 0){ print $ret; }else{ # print "$fkei\n"; } } if ($imode == 3) { use strict; use CROOZ; if(length($ret) > 0){ print $ret; }else{ # print "$fkei\n"; } } if ($imode == 0) { } print "
\n"; exit; } ## --- エラー処理2 sub error1 { &unlock if ($lockflag); if ($imode =~ /1|2|3/) { &header; print "
\n"; print "$_[0]

\n"; print "BBSROOM

\n"; if ($imode == 1) { use strict; use CROOZ; if(length($ret) > 0){ print $ret; }else{ # print "$fkei\n"; } } if ($imode == 2) { use strict; use CROOZ; if(length($ret) > 0){ print $ret; }else{ # print "$fkei\n"; } } if ($imode == 3) { use strict; use CROOZ; if(length($ret) > 0){ print $ret; }else{ # print "$fkei\n"; } } print "
\n"; } if ($imode == 0) { # print "Content-type: text/html\n\n"; print "Content-type: text/html\n"; # クライアントが gzip を許可するか全てOKの場合、gzipを利用する。 if($ENV{HTTP_ACCEPT_ENCODING} =~ /gzip/i || $ENV{HTTP_ACCEPT_ENCODING} =~ /\*/) { print "Content-Encoding: gzip\n\n"; open GZIP, "| /bin/gzip -1 -c" or die; open STDOUT, ">&GZIP"; } else { print "\n"; } print <<"HTML"; BBSROOM
BBSROOM
HOME BBSROOMとは サービス サポート パートナー リンク

Not Found

指定された掲示板はありません。
削除されたか、URLが間違っています。

BBSROOM

 


レンタル掲示板 BBSROOM
Copyright (C) PRAGE Inc. All Rights Reserved.
HTML } exit; } #----------------# # 投稿フォーム # #----------------# sub form_view { # ブラウザ情報を取得 &get_agent; # クッキー情報を取得 &get_cookie; print "
\n"; if ($mode eq "res") { print "\n"; } print <<"EOM";

EOM print "\n"; print "\n"; print "\n"; print "
NAME
MAIL
URL
TITLE   
COMMENT
COLOR\n"; # クッキーの色情報がない場合 if ($c_color eq "") { $c_color = $COLORS[0]; } foreach (0 .. $#COLORS) { if ($c_color eq "$COLORS[$_]") { print ""; print "\n"; } else { print ""; print "\n"; } } print "
AREA\n"; print "\n"; # 管理者アイコンを配列に付加 if ($my_icon) { push(@icon1,"$my_gif"); push(@icon2,"管理者用"); } if ($icon_mode) { print "   ICON   \n"; print "[IMAGE]"; } print "
DELETE\n"; print "
\n"; print "

\n"; } #------------------------------------# # 投稿フォーム携帯用追加 2004/2/21 # #------------------------------------# sub formtel { &header; open(IN,"$logfile") || &error("Open Error : $logfile"); $top = ; $i=0; $j=0; while ($_ = ) { ($no,$reno,$date,$name,$mail,$sub, $com,$url,$add,$host,$pw,$color,$icon) = split(/<>/, $_); if ($reno eq "") { $i++; $j++; } if ($i < $start) { next; } if ($i > $end) { next; } } close(IN); print "
\n"; print ""; print "新規投稿
\n"; if ($imode == 1) { &jcode'convert(*adi_html,'sjis'); print "$adi_html\n"; } if ($imode == 2) { &jcode'convert(*ady_html,'sjis'); print "$ady_html\n"; } if ($imode == 3) { &jcode'convert(*ade_html,'sjis'); print "$ade_html\n"; } print "

\n"; print "□Back\n"; print "
\n"; print "
\n"; print <<"EOM"; NAME

MAIL

URL

TITLE

COMMENT

COLOR
EOM print "
\n"; print "AREA
\n"; print "
\n"; if ($my_icon) { push(@icon1,"$my_gif"); push(@icon2,"管理者用"); } print "ICON
\n"; print "
\n"; print<<"EOM"; DELETE

WRITE

絵文字と半角カナは文字化けの原因となりますので投稿しないでください。
BBSROOM
EOM exit; } ## --- メール送信 sub mail_to { $mail_subj = "[BBSROOM] $title に投稿がありました。"; $honbun .=<<"EOM"; こんにちは。 BBSROOMからのお知らせです。 $title に$name さんから $date に投稿がありました。 投稿内容を確認するには以下のURLをクリックしてください。 http://www.bbsroom.com/cgi-local/bbs2/pres.cgi?room=$room なお登録メールアドレスの変更などは設定変更画面から おこなってください。 BBSROOM http://www.bbsroom.com/ ━ BBSROOM ━━━━━━━━━━━━━━━━ レンタル掲示板 BBSROOM URL : http://www.bbsroom.com/ 運営会社 : 株式会社プラージュ ━━━━━━━━━━━━━━━━━━━━━━ EOM &jcode'convert(*mail_subj,'jis'); &jcode'convert(*name,'jis'); &jcode'convert(*sub,'jis'); &jcode'convert(*honbun,'jis'); if ($date_type) { &jcode'convert(*date,'jis'); } $com =~ s/
/\n/g; if (open(MAIL,"| $sendmail $mail")) { print MAIL "X-Mailer: BBSROOM TypeI\n"; print MAIL "To: $mail\n"; # メールアドレスがない場合はダミーメールに置き換え if ($in{'email'} eq "") { $email = $mail; } print MAIL "From: $email\n"; print MAIL "Subject: $mail_subj\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n"; print MAIL "$honbun\n\n"; close(MAIL); } } #------------------# # クッキーの発行 # #------------------# sub set_cookie { ($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg) = gmtime(time + 60*24*60*60); @mons = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); $date_g = sprintf("%s, %02d\-%s\-%04d %02d\:%02d\:%02d GMT", $week[$wdayg],$mdayg,$mons[$mong],$yearg+1900,$hourg,$ming,$secg); $cook="name\:$name\,email\:$email\,url\:$url\,add\:$add\,pwd\:$pwd\,color\:$color\,icon\:$icon"; print "Set-Cookie: RBBS=$cook; expires=$date_g\n"; } #------------------# # クッキーを取得 # #------------------# sub get_cookie { $cookies = $ENV{'HTTP_COOKIE'}; @pairs = split(/;/, $cookies); foreach (@pairs) { local($name,$value) = split(/=/, $_); $name =~ s/\s//g; $DUMMY{$name} = $value; } @pairs = split(/,/, $DUMMY{'RBBS'}); foreach (@pairs) { local($name,$value) = split(/:/, $_); $COOKIE{$name} = $value; } $c_name = $COOKIE{'name'}; $c_email = $COOKIE{'email'}; $c_url = $COOKIE{'url'}; $c_pwd = $COOKIE{'pwd'}; $c_add = $COOKIE{'add'}; $c_icon = $COOKIE{'icon'}; $c_color = $COOKIE{'color'}; if ($FORM{'cook'} eq 'on') { if ($FORM{'name'}) { $c_name = $FORM{'name'}; } if ($FORM{'email'}) { $c_email = $FORM{'email'}; } if ($FORM{'url'}) { $c_url = $url; } if ($FORM{'pwd'}) { $c_pwd = $FORM{'pwd'}; } if ($FORM{'add'}) { $c_add = $FORM{'add'}; } if ($FORM{'icon'}) { $c_icon = $FORM{'icon'}; } if ($FORM{'color'}) { $c_color = $FORM{'color'}; } } } #----------------# # ホスト名取得 # #----------------# sub get_host { $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($host eq "" || $host eq "$addr") { $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr; } } #----------------------# # パスワード暗号処理 # #----------------------# sub e_passwd { local($inpw) = $_[0]; local(@SALT, $salt, $encrypt); @SALT = ('a'..'z', 'A'..'Z', '0'..'9', '.', '/'); srand; $salt = $SALT[int(rand(@SALT))] . $SALT[int(rand(@SALT))]; $encrypt = crypt($inpw, $salt) || crypt ($inpw, '$1$' . $salt); return $encrypt; } #----------------------# # パスワード照合処理 # #----------------------# sub d_passwd { local($inpw, $logpw) = @_; local($salt, $key, $check); $salt = $logpw =~ /^\$1\$(.*)\$/ && $1 || substr($logpw, 0, 2); $check = "no"; if (crypt($inpw, $salt) eq "$logpw" || crypt($inpw, '$1$' . $salt) eq "$logpw") { $check = "yes"; } return $check; } #--------------------------------# # ロックファイル : symlink関数 # #--------------------------------# sub lock1 { local($retry) = 5; while (!symlink(".", $lockfile)) { if (--$retry <= 0) { &error("LOCK is BUSY","lock"); } sleep(1); } } #-----------------------------# # ロックファイル : open関数 # #-----------------------------# sub lock2 { local($flag) = 0; foreach (1 .. 5) { if (-e $lockfile) { sleep(1); } else { open(LOCK,">$lockfile") || &error("Write Error : $lockfile","lock"); close(LOCK); $flag = 1; last; } } if ($flag == 0) { &error("LOCK is BUSY","lock"); } } #--------------# # 自動リンク # #--------------# sub auto_link { $_[0] =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)/$1$2<\/a>/g; } #------------------------------------------------- # 日本語チェック #------------------------------------------------- sub jp_wd { local($sub, $com, $mat1, $mat2, $code1, $code2); $sub = $FORM{'sub'}; $com = $FORM{'com'}; if ($sub) { ($mat1, $code1) = &jcode'getcode(*sub); } ($mat2, $code2) = &jcode'getcode(*com); if ($code1 ne 'sjis' && $code2 ne 'sjis') { &error("TITLE又はCOMMENTに日本語が含まれていません。"); } } #------------------------------------------------- # 禁止ワード #------------------------------------------------- sub deny_word { local($word) = @_; local($flg); foreach ( split(/,+/, $deny_word) ) { if (index($word,$_) >= 0) { $flg=1; last; } } if ($flg) { &error("不適切な投稿のため受理できません。"); } } #--------------------# # イメージ画像表示 # #--------------------# sub image { &header; print "

\n"; print "Icon Sample\n"; print "

- 現在登録されているIconは以下のとおりです -\n"; print "


\n"; print "

\n"; $i=0; $j=0; $stop = @icon1; foreach (0 .. $#icon1) { $i++; $j++; print "\n"; if ($i >= 5) { print ''; $i=0; } if ($j eq "$stop") { if ($i == 0) { last; } while ($i < 5) { print ""; $i++; } } } print "
$icon2[$_]


\n"; print "

\n"; print "\n"; exit; }