#!/usr/local/bin/perl #require 'jcode.pl'; use Jcode; #----------------------------------------------------------------------------------------- # 変数定義 hensuu teigi #----------------------------------------------------------------------------------------- #$EDIT_DISP_check = FALSE; # 編集機能を表示 $EDIT_DISP_check = TRUE; #$REMOTE_ADDR_check = FALSE; # イントラネットの外から見せない $REMOTE_ADDR_check = TRUE; #$DEBUG = TRUE; #デバッグモード $GOOGLE = TRUE; #グーグル表示 $scriptname = "umihoshi.cgi"; #スクリプト名リロードに使用 $user1 = "shinjix"; $user2 = "yoshiko"; $bbsName = "s-bbs"; $TITLE = "海☆彡"; $TITLE2 = '
 海☆彡  the starfish
'; $softversion = "0.19"; ####太腿ブルースキーム # $col_BG = "002233"; #背景色 $col_TEXT = "ffffff"; #テキスト $col_LINK = "4477ff"; #リンク $col_VLINK = "3366ee"; #訪問済みリンク $col_TABLEBG = "003355"; #書き込み用テーブルの背景色 $col_TABLETX = "FFFFFF"; #書き込み用テーブルの文字 $col_DARK = "003355"; #暗くなった色 $col_TITLE1 = "55ccff"; #発言タイトルの色1 番号 $col_TITLE2 = "44aadd"; #発言タイトルの色2 日付 $col_TITLE3 = "3388cc"; #発言タイトルの色3 名前 $col_TITLE4 = "ddddff"; #発言タイトルの色4 タイトル ####ブルーにピンク # $col_BG = "003355"; #背景色 $col_TEXT = "ffffff"; #テキスト $col_LINK = "FF7700"; #リンク $col_VLINK = "FF5500"; #訪問済みリンク $col_TABLEBG = "FFD0c0"; #書き込み用テーブルの背景色 $col_TABLETX = "443333"; #書き込み用テーブルの文字 $col_DARK = "003355"; #暗くなった色 $col_TITLE1 = "55ccff"; #発言タイトルの色1 番号 $col_TITLE2 = "44aadd"; #発言タイトルの色2 日付 $col_TITLE3 = "3388cc"; #発言タイトルの色3 名前 $col_TITLE4 = "ddddff"; #発言タイトルの色4 タイトル ####ダイナシティー ブルーにオレンジ # $col_BG = "002233"; #背景色 $col_TEXT = "ffeeee"; #テキスト $col_LINK = "FF7700"; #リンク $col_VLINK = "FF5500"; #訪問済みリンク $col_TABLEBG = "FFa020"; #書き込み用テーブルの背景色 $col_TABLETX = "443333"; #書き込み用テーブルの文字 $col_DARK = "003355"; #暗くなった色 $col_TITLE1 = "55ccff"; #発言タイトルの色1 番号 $col_TITLE2 = "44aadd"; #発言タイトルの色2 日付 $col_TITLE3 = "3388cc"; #発言タイトルの色3 名前 $col_TITLE4 = "ddddff"; #発言タイトルの色4 タイトル ####ソフト管理 茶色にピンク # $col_BG = "331111"; #背景色 $col_TEXT = "ffffff"; #テキスト $col_LINK = "FF7700"; #リンク $col_VLINK = "FF5500"; #訪問済みリンク $col_TABLEBG = "FFD0c0"; #書き込み用テーブルの背景色 $col_TABLETX = "443333"; #書き込み用テーブルの文字 $col_DARK = "003355"; #暗くなった色 $col_TITLE1 = "55ccff"; #発言タイトルの色1 番号 $col_TITLE2 = "44aadd"; #発言タイトルの色2 日付 $col_TITLE3 = "3388cc"; #発言タイトルの色3 名前 $col_TITLE4 = "ddddff"; #発言タイトルの色4 タイトル #### linux ブルー地に白 # $col_BG = "003355"; #背景色 $col_TEXT = "ffffff"; #テキスト $col_LINK = "FF7700"; #リンク $col_VLINK = "FF5500"; #訪問済みリンク $col_TABLEBG = "FFffff"; #書き込み用テーブルの背景色 $col_TABLETX = "000055"; #書き込み用テーブルの文字 $col_DARK = "003355"; #暗くなった色 $col_TITLE1 = "55ccff"; #発言タイトルの色1 番号 $col_TITLE2 = "44aadd"; #発言タイトルの色2 日付 $col_TITLE3 = "3388cc"; #発言タイトルの色3 名前 $col_TITLE4 = "ddddff"; #発言タイトルの色4 タイトル #### 個人事業 ピンク # $col_BG = "ffcccc"; #背景色 $col_TEXT = "220000"; #テキスト $col_LINK = "cc3333"; #リンク $col_VLINK = "993333"; #訪問済みリンク $col_TABLEBG = "ff9999"; #書き込み用テーブルの背景色 $col_TABLETX = "ffdddd"; #書き込み用テーブルの文字 $col_DARK = "003355"; #暗くなった色 $col_TITLE1 = "993333"; #発言タイトルの色1 番号 $col_TITLE2 = "cc3333"; #発言タイトルの色2 日付 $col_TITLE3 = "ff3333"; #発言タイトルの色3 名前 $col_TITLE4 = "993333"; #発言タイトルの色4 タイトル #### bbs-cg # $col_BG = "001133"; #背景色 $col_TEXT = "ffffff"; #テキスト $col_LINK = "cc5522"; #リンク $col_VLINK = "ee4411"; #訪問済みリンク $col_TABLEBG = "ddccaa"; #書き込み用テーブルの背景色 $col_TABLETX = "001133"; #書き込み用テーブルの文字色 $col_DARK = "003355"; #暗くなった色 $col_TITLE1 = "ff5500"; #発言タイトルの色1 番号 $col_TITLE2 = "dd4400"; #発言タイトルの色2 日付 $col_TITLE3 = "aa2200"; #発言タイトルの色3 名前 $col_TITLE4 = "ffdddd"; #発言タイトルの色4 タイトル #### COOLWEB オレンジに緑 $col_BG = "ffd012"; #背景色 $col_TEXT = "000033"; #テキスト $col_LINK = "0066ee"; #リンク $col_VLINK = "FF4400"; #訪問済みリンク $col_TABLEBG = "008899"; #書き込み用テーブルの背景色 $col_TABLETX = "ffffff"; #書き込み用テーブルの文字 $col_DARK = "ffd455"; #暗くなった色 $col_TITLE1 = "006699"; #発言タイトルの色1 番号 $col_TITLE2 = "0055aa"; #発言タイトルの色2 日付 $col_TITLE3 = "004488"; #発言タイトルの色3 名前 $col_TITLE4 = "003377"; #発言タイトルの色4 タイトル #### COOLWEB オレンジに緑 テスト中 $col_BG = "ffaa11"; #背景色 $col_TEXT = "223322"; #テキスト $col_LINK = "0066ee"; #リンク $col_VLINK = "FF4400"; #訪問済みリンク $col_TABLEBG = "008899"; #書き込み用テーブルの背景色 $col_TABLETX = "ffffff"; #書き込み用テーブルの文字 $col_DARK = "ffd455"; #暗くなった色 $col_TITLE1 = "006699"; #発言タイトルの色1 番号 $col_TITLE2 = "0055aa"; #発言タイトルの色2 日付 $col_TITLE3 = "004488"; #発言タイトルの色3 名前 $col_TITLE4 = "003377"; #発言タイトルの色4 タイトル ####海星トップスキーム スカイブルー $col_BG = "eeeeff"; #背景色 $col_TEXT = "000033"; #テキスト $col_LINK = "000055"; #リンク $col_VLINK = "000077"; #訪問済みリンク #$col_TABLEBG = "f9f9ff"; #書き込み用テーブルの背景色 $col_TABLEBG = "d0d0ff"; #書き込み用テーブルの背景色 $col_TABLETX = "443333"; #書き込み用テーブルの文字 $col_DARK = "003355"; #暗くなった色 $col_TITLE1 = "55ccff"; #発言タイトルの色1 番号 $col_TITLE2 = "44aadd"; #発言タイトルの色2 日付 $col_TITLE3 = "3388cc"; #発言タイトルの色3 名前 $col_TITLE4 = "111155"; #発言タイトルの色4 タイトル #$col_TITLE4 = "ddddff"; #発言タイトルの色4 タイトル #---------------------------------------------------------------------------------------- # パラメータ解析 parameta kaiseki #---------------------------------------------------------------------------------------- if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } #$buffer = $ENV{'QUERY_STRING'}; @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($valuename, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $FORM{$valuename} = $value; } #----------------------------------------------------------------------------------------- # クッキー cookie teigi #----------------------------------------------------------------------------------------- ################## 抽出 @pairs = split(/;/,$ENV{'HTTP_COOKIE'}); foreach $pair (@pairs) { ($key,$val) = split(/=/,$pair,2); $key =~ s/ //g; # if ($key eq $ENV{'SCRIPT_NAME'}) { if ($key eq $bbsName) { @pairs = split(/,/,$val); foreach $pair (@pairs) { ($key,$val) = split(/:/,$pair,2); $COOKIE{$key} = $val; } last; } } ####################### フォームがセットされてない場合 #if ($admin_passwd =~ /^\$1\$/) { $salt = 5; } else { $salt = 2; } #if (crypt($in{'passwd'},substr($admin_passwd,0,$salt)) eq $admin_passwd) { $level = "[システム管理者]"; $MASTER = 1; } #if ($in{'_action'} eq "regist") { ®ist; } #elsif ($in{'_edit'}) { &edit; exit; } #elsif ($in{'_resp'}) { if ($FORM{'user'} eq "") { $FORM{'user'} = $COOKIE{'user'}; } if ($FORM{'email'} eq "") { $FORM{'email'} = $COOKIE{'email'}; } if ($FORM{'tm'} eq "") { $FORM{'tm'} = $COOKIE{'tm'}; } if ($FORM{'passwd'} eq "") { $FORM{'passwd'} = $COOKIE{'passwd'}; } # &form2; # exit; #} ################## フォームがセットされている場合クッキー定義してセット $COOKIE_CHECK = $FORM{'user'}; ($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg) = gmtime(time + 80*24*60*60); $y0="Sunday"; $y1="Monday"; $y2="Tuesday"; $y3="Wednesday"; $y4="Thursday"; $y5="Friday"; $y6="Saturday"; $m0="Jan"; $m1="Feb"; $m2="Mar"; $m3="Apr"; $m4="May"; $m5="Jun"; $m6="Jul"; $m7="Aug"; $m8="Sep"; $m9="Oct"; $m10="Nov"; $m11="Dec"; @youbi = ($y0,$y1,$y2,$y3,$y4,$y5,$y6); @monthg = ($m0,$m1,$m2,$m3,$m4,$m5,$m6,$m7,$m8,$m9,$m10,$m11); $date_gmt = sprintf("%s\, %02d\-%s\-%04d %02d:%02d:%02d GMT",$youbi[$wdayg],$mdayg,$monthg[$mong],$yearg +1903,$hourg,$ming,$secg); if ($COOKIE_CHECK) { # print "Set-Cookie: $ENV{'SCRIPT_NAME'}=user:$FORM{'user'}\,email:$FORM{'email'}\,tm:$FORM{'tm'}\,passwd:$FORM{'passwd'}; path=$path; expires=$date_gmt\n"; # print "Set-Cookie: user:$FORM{'user'}\,email:$FORM{'email'}\,tm:$FORM{'tm'}\,passwd:$FORM{'passwd'}; expires=$date_gmt\n"; # print "Set-Cookie: $bbsName=user:$FORM{'user'}\,email:$FORM{'email'}\,tm:$FORM{'tm'}\,passwd:$FORM{'passwd'}; path=$path; expires=$date_gmt\n"; print "Set-Cookie: $bbsName=user:$FORM{'user'}\,email:$FORM{'email'}\,tm:$FORM{'tm'}\,passwd:$FORM{'passwd'}; expires=$date_gmt\n"; $COOKIE{'user'} = $FORM{'user'}; $COOKIE{'email'} = $FORM{'email'}; $COOKIE{'passwd'} = $FORM{'passwd'}; $COOKIE{'tm'} = $FORM{'tm'}; } else { ; print "Set-Cookie: $bbsName=user:\,email:\,tm:\,passwd:; path=$path; expires=$date_gmt\n"; $COOKIE{'user'} = ""; $COOKIE{'email'} = ""; $COOKIE{'passwd'} = ""; $COOKIE{'tm'} = ""; } #---------------------------------------------------------------------------------------- # スヌーパー snooper #---------------------------------------------------------------------------------------- open (SNF,">>snoop.dat"); $date = `date "+%y/%m/%d/%a %H:%M"`; chop $date; if (!(($ENV{'REMOTE_HOST'} =~ /^catfish/)||($ENV{'REMOTE_HOST'} =~ /^manta/))) { print SNF ("$date,$COOKIE{'user'},$ENV{'REMOTE_HOST'},$ENV{'REMOTE_ADDR'},$ENV{'HTTP_REFERER'},$ENV{'HTTP_USER_AGENT'},$ENV{'HTTP_UA_OS'}\n"); } close(SNF); #----------------------------------------------------------------------------------------- # コンテントタイプ書き出し #----------------------------------------------------------------------------------------- print("Content-type: text/html\n\n"); #----------------------------------------------------------------------------------------- # HTMLヘッダー部分表示 header hyouji #----------------------------------------------------------------------------------------- print << "EOF"; EOF print("$TITLE"); print(""); ###############JAVA SCRIPT print(''); ###############JAVA SCRIPT print("
"); print(""); print("\n"); #---------------------------------------------------------------------------------------- #                ボディー表示開始 body hyouji kaishi #---------------------------------------------------------------------------------------- print(""); print("
"); print("$TITLE2\n"); #---------------------------------------------------------------------------------------- #                掲示板リンクデータ読み込み表示 link data yomikomi #---------------------------------------------------------------------------------------- open(LINKFP,"link.dat"); while(){ &Jcode'convert($FORM{'new'},sjis); #' $_ =~ s/\r\n\n/\n/g; #改行コード処理 $_ =~ s/\r\n/\n/g; # unless (($_ =~ /^\#.*$/) && ($_ =~ //)) { unless ($_ =~ /^\#.*$/) { if ($_ =~ /^\+inside/ ){ #イントラネットより内側の場合 if($ENV{'REMOTE_ADDR'} =~ /^192\.168\.1\./){ @alink = split(/\,/,$_); $back_URL = "[▲".$alink[1]."]"; print "$back_URL"; } }elsif ($_ =~ /^\+outside/ ){ #イントラネットより外側の場合 unless($ENV{'REMOTE_ADDR'} =~ /^192\.168\.1\./){ @alink = split(/\,/,$_); $back_URL = "[▼".$alink[1]."]"; print "$back_URL"; } }elsif ($_ =~ /^\+all/ ){ #両方表示 @alink = split(/,/); print ""; print '['; print $alink[1]; print "]"; }else{ print $_; } } } close(NFP); #---------------------------------------------------------------------------------------- # 書き込み追加 kakikomi tsuika # #---------------------------------------------------------------------------------------- open(NFP,"NO.log"); while(){ $LastNum = $_ if ($_ =~ /^[0-9]/); } close(NFP); if ($FORM{run} eq 'go'){ if(lstat("lock")){ print "

ただいまbbsは混雑しております。も少しあと出ね。

"; exit 0; } symlink ("bbs.log","lock"); # $date = `date "+%a %b %e %H:%M:%S %Z %Y"`; $date = `date "+%y/%m/%d/%a %H:%M"`; # $bak = `date "+%y%m%d%a"`; $bak = `date "+%y%m"`; $ren = rename("bbs.log","bbs.log.old"); #system ("cp bbs.log.old store/bbs.log.$bak"); open(WFP,">bbs.log"); select WFP; $| = 1; if($FORM{'add'}){ open(NFP,">NO.log"); $LastNum++; print NFP $LastNum; close(NFP); &Jcode'convert($FORM{'new'},sjis); #' $FORM{'new'} =~ s/\r\n\n/\n/g; #改行コード処理 $FORM{'new'} =~ s/\r\n/\n/g; $FORM{'new'} =~ s/\n/
/g; #######fromはっちー if ($FORM{'new'} !~ /()/i){ $FORM{'new'} =~ s/(http:\/\/[\w\.\~\-\/\?\&\+\=\:\@\%]+)/$1<\/A>/ig; } if ($FORM{'new'} !~ /()/i){ $FORM{'new'} =~ s/(https:\/\/[\w\.\~\-\/\?\&\+\=\:\@\%]+)/$1<\/A>/ig; } ####### chop($date); print WFP ",番号:$LastNum ) $date "; print WFP "発言者:$FORM{'user'} "; if ($FORM{'email'}){print WFP "[〒]";} if ($FORM{'email'}){print WFP "";} print WFP "
[$FORM{'title'}]
$FORM{'new'}
"; print WFP "\n"; } $i = 0; open(FP,"bbs.log.old"); # ip_listファイルオープン(削除、追加) while(){ $i++; print WFP $_; } close(FP); close(WFP); } #---------------------------------------------------------------------------------------- # データ修正 shuusei # #---------------------------------------------------------------------------------------- if ($FORM{run} eq 'edit'){ if(lstat("lock")){ print "

ただいまbbsは混雑しております。も少しあと出ね。

"; exit 0; } symlink ("bbs.log","lock"); $ren = rename("bbs.log","bbs.log.old"); open(FP,"bbs.log.old"); open(WFP,">bbs.log"); while (){ $e_nox = $_; $e_nox =~ s/^.*番号://; $e_nox =~ s/ ).*$//; if ($e_nox == $FORM{'e_no'}){ if($FORM{'action'} eq "del"){ print WFP "+"; print WFP $_; }elsif($FORM{'action'} eq "dark"){ chop; $_ =~ s/^$>//; print WFP "$_\n"; }elsif($FORM{'action'} eq "big"){ chop; $_ =~ s/^$>//; print WFP "$_\n"; }elsif($FORM{'action'} eq "regular"){ chop; $_ =~ s/^$>//; print WFP "$_\n"; }elsif($FORM{'action'} eq "small"){ chop; $_ =~ s/^$>//; print WFP "$_\n"; } }else{ print WFP $_; } } close(WFP); close(FP); } #---------------------------------------------------------------------------------------- # HTML表示 hyouji # #---------------------------------------------------------------------------------------- select STDOUT; # 新規メッセージ追加 ########################cookie クッキー デバッグ表示 if ($DEBUG) { print <<"EOF"; cookie='; $ENV{'HTTP_COOKIE'} $DEBUG EOF } ######################## print(""); $FORM{'user'} =~ s/\"//g;; print(""); ########################cookie クッキー ユーザー名表示 print <<"EOF";
\n発言者:
メール:
タイトル:
メッセージ:
EOF ######################## #print("\n"); print("\n"); #print("
注意事項
\n"); print("
\n"); print("
\n"); print("\n"); print("下のリロードボタンでリロードできます。過去のログを見てるときはトップにリロードされます;-)"); print("\n"); print("バグレポートはこちらへ"); #---------------------------------------------------------------------------------------------------- #-----------------------------------------------google検索 #---------------------------------------------------------------------------------------------------- if (0){ print('
'); print(' '); print(' '); print(' '); print(' '); print(' '); print(' '); print('
Google '); print(' '); print(' '); print(' '); print(' '); print('
'); print("
"); } if ($GOOGLE){ print <<"EOF";
Google
     
EOF } #---------------------------------------------------------------------------------------------------- $date = `date "+%y%m%e%a%H%M%S"`; chop($date); $dated = $date; $dated =~ s/ //; $dated =~ s/\n//; #print("
[リロード]
\n"); print("[リロード]
\n"); #print("\n"); #---------------------------------------------------------------------------------------------------- #-----------------------------------------------発言表示 hatugen hyouji #---------------------------------------------------------------------------------------------------- $i = 0; $start = 0; $hyoujiNo = 40; $start = $FORM{'startNo'}; #printf ("startNo = %i", $FORM{'startNo'}); $end = $start+$hyoujiNo; #if(($ENV{'REMOTE_ADDR'} =~ /^192\.168\.1\./) && ($REMOTE_ADDR_check = TRUE)){ printf($ENV{'REMOTE_ADDR'} ." ". ($ENV{'REMOTE_ADDR'} =~ /^192\.168\./) . " " . true); if(($REMOTE_ADDR_check eq FALSE) || ($ENV{'REMOTE_ADDR'} =~ /^192\.168\.1\./) || ($FORM{'user'} eq $user1 ) || ($FORM{'user'} eq $user2 )){ open(FP,"bbs.log"); # ログファイルオープン while(){ $i++; chop; # メッセージ表示 if ($start < $i){ unless ($_ =~ /^\+.*/){ # 追加 print("
"); print(""); print(""); print(""); print(""); print("
"); $_ =~ s/,//; if ($FORM{'inside'}){ $_ =~ s/203.141.145.139/starfish/g; }; print($_); ######## 追加 $e_no = $_; $e_no =~ s/^.*番号://; $e_no =~ s/ ).*$//; if ($EDIT_DISP_check eq TRUE){ print("[削除]"); print("[暗くなる]"); print("[拡大]"); print("[戻る]"); print("[縮小]"); } ######## 追加 print("
"); if ($i > $end-1){ last;} print "\n"; } } } close(FP); } #--------------------------------- $nextStart = $FORM{'startNo'}+$hyoujiNo; if ($i > $end-1){ print("
[過去 $hyoujiNo 件表\示]
\n"); }else{ print("
[表\示終了]
"); # print("[もっと昔に行って見る]\n"); } print("
\n"); print $back_URL; print("
Copy right (C) Silly-BBS V-$softversion shinji kubo All rights Reserved\n"); print("\n"); print("\n"); #---------------------------------------------------------------------------------------- # HTML終了 # #---------------------------------------------------------------------------------------- print("\n"); print("\n"); if ($FORM{'run'} eq go && $FORM{'user'} eq "shinji"){$dummy = `./nkfsd bbs.log`;} if ($FORM{run} eq 'go'){ unlink("lock"); } if ($FORM{run} eq 'edit'){ unlink("lock"); } system ("chmod 660 *.log *.log*");