#!/usr/bin/perl #$CPU_start = (times)[0]; $|=1; require './cgi-lib.pl'; require './boardini.cgi'; $time = time; # ▼▼悪戯防止ライブラリ▼▼ require './lq.pl'; sub zddbbs_ { require './zddbbs.pl'; if ($lq::USERIDtime && ($time < ($lq::time_o_cookie + $lq::USERIDtime*60*60))) { &error("クッキー発行から時間が経ってないので投稿権限がありません。"); } # 単純な繰り返しの禁止 if ($lq::check_frq && &zddbbs'check_frq($in{'message'})) { &addDataFile(D,$ENV{'REMOTE_ADDR'},90*24*60*60 + $time, $time) if ($lq::AutoKick); &error('単純な繰り返しが多いので書き込みできませんでした。エラーログに記録しました。'); } # AA禁止 if ($lq::check_AA && &zddbbs'check_AA($in{'message'})) { &addDataFile(D,$ENV{'REMOTE_ADDR'},90*24*60*60 + $time, $time) if ($lq::AutoKick); &error('AAぽいので書き込みできませんでした。エラーログに記録しました。'); } # 個人情報禁止 if ($lq::check_PI && &zddbbs'check_PI($in{'message'} )) { &addDataFile(D,$ENV{'REMOTE_ADDR'},90*24*60*60 + $time, $time) if ($lq::AutoKick); &error( '住所または電話番号ぽいので書き込みできませんでした。エラーログに記録しました。' ); } if ($lq::check_PI && &zddbbs'check_PI($in{'name'})) { &addDataFile(D,$ENV{'REMOTE_ADDR'},90*24*60*60 + $time, $time) if ($lq::AutoKick); &error( '住所または電話番号ぽいので書き込みできませんでした。エラーログに記録しました。' ); } if ($lq::check_PI && &zddbbs'check_PI($in{'subject'} )) { &addDataFile(D,$ENV{'REMOTE_ADDR'},90*24*60*60 + $time, $time) if ($lq::AutoKick); &error( '住所または電話番号ぽいので書き込みできませんでした。エラーログに記録しました。' ); } # サイト宣伝禁止 if ($lq::check_URL && &zddbbs'check_URL($in{'mail'})) { &addDataFile(D,$ENV{'REMOTE_ADDR'},90*24*60*60 + $time, $time) if ($lq::AutoKick); &error( '内容にURLを含んでいるため書き込みできませんでした。エラーログに記録しました。' ); } if ($lq::check_URL && &zddbbs'check_URL($in{'message'})) { &addDataFile(D,$ENV{'REMOTE_ADDR'},90*24*60*60 + $time, $time) if ($lq::AutoKick); &error( '内容にURLを含んでいるため書き込みできませんでした。エラーログに記録しました。' ); } # 禁止ワード @taboo = split(/ /,$lq::taboo); if (&zddbbs'check_str( $in{'message'}, *taboo)) { &addDataFile(D,$ENV{'REMOTE_ADDR'},90*24*60*60 + $time, $time) if ($lq::AutoKick); &error('投稿禁止ワードが含まれているため書き込みできませんでした。エラーログに記録しました。'); } if (&zddbbs'check_str( $in{'name'} , *taboo)) { &addDataFile(D,$ENV{'REMOTE_ADDR'},90*24*60*60 + $time, $time) if ($lq::AutoKick); &error('投稿禁止ワードが含まれているため書き込みできませんでした。エラーログに記録しました。'); } if (&zddbbs'check_str( $in{'mail'}, *taboo)) { &addDataFile(D,$ENV{'REMOTE_ADDR'},90*24*60*60 + $time, $time) if ($lq::AutoKick); &error('投稿禁止ワードが含まれているため書き込みできませんでした。エラーログに記録しました。'); } if (&zddbbs'check_str( $in{'subject'}, *taboo)) { &addDataFile(D,$ENV{'REMOTE_ADDR'},90*24*60*60 + $time, $time) if ($lq::AutoKick); &error('投稿禁止ワードが含まれているため書き込みできませんでした。エラーログに記録しました。'); } if (&zddbbs'check_str( $in{'url'} , *taboo)) { &addDataFile(D,$ENV{'REMOTE_ADDR'},90*24*60*60 + $time, $time) if ($lq::AutoKick); &error('投稿禁止ワードが含まれているため書き込みできませんでした。エラーログに記録しました。'); } if ($lq::check_dup && &zddbbs'check_dup($zddbbs_dat ,$in{'message'},1)) { &addDataFile(D,$ENV{'REMOTE_ADDR'},90*24*60*60 + $time, $time) if ($lq::AutoKick); &error( '前回の投稿と内容が似ているため書き込みできませんでした。エラーログに記録しました。' ); } } sub addDataFile { if ( open( DAT, ">>$DataFile" ) ) { print DAT join( "\t", @_ ); print DAT "\n"; close( DAT ); } } # ▲▲悪戯防止ライブラリ▲▲ ($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime($time); $year = $year+1900; $mon = $mon+1; $datenum = sprintf("%04d%02d%02d%02d%02d%02d",$year,$mon,$mday,$hour,$min,$sec); $upurl = $updir if $upurl eq ""; require './skinini.cgi'; require './conv.cgi'; require './ta-lib.cgi'; #---------------------------------------------------------------main &host_get; &decode; &count; if ($in{'command'} eq "write") {&write;} elsif ($in{'command'} eq "reswrite") {&reswrite;} elsif ($in{'command'} eq "remove") {&remove;} elsif ($in{'command'} eq "download") {&download;} else {&html;} exit; #---------------------------------------------------------------html sub html { if ($pict) {$rport = $ENV{'REMOTE_PORT'}; $himicode .= "?$rport$facheck1";} #ヒミコード if ($html_mode eq 'go') { $view_res = $view_resh; $view_thr = $view_thrh; $changedef = $view_thr; $skin_html = $skin_htmlh; $in{'command'} = ''; $in{'thrpass'} = ''; $c_name = ''; $c_mail = ''; $c_url = ''; $c_pass = ''; $c_icon = ''; $c_color = ''; $thread_new = ''; $thread_midoku = ''; } else { if ($in{'command'} eq "read") {$skin_html = $thread_html;} if ($in{'page'}) {($in{'page'},$in{'def'},$in{'log'}) = split(/-/, $in{'page'});} if ($in{'def'}) {$changedef = $in{'def'};} else {$changedef = $view_thr;} if ($in{'log'} > 0) {$log_d = $in{'log'}.$kak_d;} } open(IN, $skin_html) || &error('スキンエラー'); $skin = join('',); close(IN); open(LOG, "$logdir$filecount") || &error('ファイルエラー'); $filecc = join('',); close(LOG); open(IN,"$logdir$log_d") || &error('ファイルエラー'); @lines = ; close (IN); if ($in{'s_word'}) {&search;} if ($in{'sort'}) { #投票機能のアイデアbyぴぃロッキー氏 if ($in{'sort'} eq 'color') {@lines = @{&csvsort(6,@lines);};} elsif ($in{'sort'} eq 'icon') {@lines = @{&csvsort(7,@lines);};} elsif ($in{'sort'} eq 'res') {@lines = @{&csvsort(8,@lines);};} elsif ($in{'sort'} eq 'date') {@lines = @{&csvsort(1,@lines);};} elsif ($in{'sort'} eq 'new') {@lines = @{&csvsort(0,@lines);};} } $last = @lines; if ($in{'page'} eq '') { $pagestart = 0; } else { $pagestart = $in{'page'}; if ($pagestart < 0) {$pagestart = 0;} if ($pagestart > $last) {$pagestart = $last - $changedef;} } $pageend = $pagestart + $changedef; if ($pageend > $last) {$pageend = $last;} $pagefirst = $pagestart + 1; $line_select = "\n"; $log_select .= "