bbs.cgi再開発プロジェクト 3
■ このスレッドは過去ログ倉庫に格納されています
警察板
ERROR:このスレッドには書き込めません。緊急緊急緊急!!
のエラーはでますが、いくらでも書けますよ
>>567
oyster100/200/900番台ならroot師におながいしてchownしてもらえばいいのではないかと。 if (-e $DATFILE && (!-w $DATFILE || -s _ > 512 * 1024)) {
DispError("ERROR!", "ERROR:このスレッドには書き込めません。");
}
#中略
my $lognum = 0;
if (open(IN, "< $DATFILE")) {
$lognum = (join('', <IN>)) =~ tr/\n/\n/;
close(IN);
}
if ($lognum > 1010) {
chmod(0555, $DATFILE);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}else{
if (-w $DATFILE && open(OUT, ">>$DATFILE")) {
print OUT "$outdat\n";
++$lognum;
if ($lognum > 999) {
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
++$lognum;
close(OUT);
chmod(0555, $DATFILE);
}
close(OUT);
}elsif (!-e $DATFILE) {
# スレ立て処理
chmod(0666, $DATFILE);
}else{
DispError("ERROR!", "ERROR:このスレッドには書き込めません。");
}
}
#(´-`).。oO(テストまでしちゃったよ…) >>534
http://society.2ch.net/test/read.cgi/police/990121724/
>"ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!"
↑これが出ているのに上のスレに書き込めるということは bbs.cgi の序盤のここ↓を通り抜けているということなので
パーミッションがどこかで再変更されているはず。
>#.datが存在してないか書けないならばいばい
>unless(-w $DATAFILE){
>DispError("ERROR!","ERROR:このスレッドには書けません!");
>}
----
http://society.2ch.net/test/read.cgi/police/1040783990/
このスレは現在パーミッションではなくてここ↓で止まっているもよう。
>unless( -s $DATAFILE <= 512000){
>DispError("ERROR!","ERROR:このスレッドは512kを超えているので書けません!");
>}
なので一番ぁゃιぃここをこの↓ように追加修正すれば現在書き込めるものも含めて
再度パーミッション変更されるので書き込み出来なくなるはず。
#パーミッション調整
umask(0);
chmod(0666, $dattemp);
}
if($lognum > 1010)#1011以上なのに666の暴走ストッパー
{
chmod(0555, $dattemp);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。禁止禁止禁止!!");
}
#禁止と表示されればここ↑で再設定されたはずなので書き込めていないはず。。 WebProg板だと「情報を小出しにするな」って怒られるんだな
規制とかクリティカルな部分を除いて公開、でもダメ? まぁ普通はブラックボックス部分は除いて公開するのが良いよね。
規制のあたりはサブルーチン化してパラメーターと返り値だけ提示すりゃいいんじゃないの。 一応転載。
467 :動け動けウゴウゴ2ちゃんねる [] :04/03/03 03:44 ID:rxiuKiD1
http://pc.2ch.net/test/read.cgi/mac/1057421491
1000を越えても止まらないので対応をよろしくお願いします。 現在の bbs.cgi の version
20040301
どこがどう変わったのか変更点がよくわからないですがまだ書き込めます そうですか。。
ではまたしばらく待機しておきます。。。 >>606
そこで確認できる範囲では、news7だけ更新されませんね。
live5はまた別だろうし。 おおーっ
news7 も配布先リストに加えました。 >>606
そこ新しくできたnews10が入ってないね。 >596
みたいにdatに書き出すタイミングを考慮しないとだめぽ? datディレクトリをls -lで見てみたらなにか分かるかしらん。 ∧_∧
( ・∀・) <忙しそうだし、催促せずに待ちますね。。
( つ旦)
と__)__) ギコナビでレスを2325まで確認。
WinXP+IE6SP1では1001 :1001 :Over 1000 Threadが出て終わり。
山本寛斎の制服でPC自作できたよ〜♪
http://pc3.2ch.net/test/read.cgi/jisaku/1055561893/l50
ためしになつかしドラマ板の1000近いスレをいくつか埋めてみたんだけど
どれも1000突破した。もしかして板、というか鯖によって突破したり突破しなかったりするのか? sub MakeWorkFile{
に最後の手段を追加してみた。
my $key = @_[0];
my $workfile = $TEMPPATH . $key . ".html";
my $dattemp = $DATPATH . $key . ".dat";
my (@messx,@content,@logdat);
my ($lognum,$mailto,$time,$brmax,$topnum,$firstlog,$name,$mail,$subject,$message);
open(RDAT,"<$dattemp");
@logdat=<RDAT>;#ログを配列に読み込む
close(RDAT);
#ログのカキコ数を取得
$lognum = @logdat;
if($lognum > 1020)#最後の手段
{
if(-w $dattemp){
my $datdat = $DATPATH . $key;
my $tmpdat = $DATPATH . $key . ".tmp";
my $success;
open(COPY, "cp $dattemp $datdat |");
close(COPY);
$success = 0;
until($success){ $success = rename($datdat, $dattemp); }
chmod(0555, $dattemp);
unlink($tmpdat);
}
DispError("ERROR!", "ERROR:このスレッドには書き込めません。最後の手段!!");
}
if($lognum > 1010)#念のため暴走ストッパー
{
umask(0);
chmod(0555, $dattemp);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
if($lognum > 999)
{
if(open(OUT,">>$dattemp"))
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
$lognum++;
}
umask(0);
chmod(0555, $dattemp);
}
else
{
#パーミッション調整
umask(0);
chmod(0666, $dattemp);
}
>>626
これのこと?
http://qb3.2ch.net/test/read.cgi/operate/1069525567/
479 名前:動け動けウゴウゴ2ちゃんねる[] 投稿日:04/03/05 18:09 ID:Oh96gKaq
1000を超えても延々と書き込めるようです
http://bubble.2ch.net/test/read.cgi/natsudora/1040055595/
481 名前:サザン ★[sage] 投稿日:04/03/05 18:37 ID:???
>>479
とめましたー 何故か bubble サーバは、
昔立てられたスレッドの所有者が nobody になっているもより。
ということは・・・
↓ この↓あたりも変更直後くらいからパーミッションが変わって書き込めなくなっているもよん
【TBS】うちの子にかぎって・・・【田村正和】
http://bubble.2ch.net/test/read.cgi/natsudora/1047211834/
【チュー】マウススレ【チュー】
http://pc.2ch.net/test/read.cgi/mac/1057421491/
----
ERROR!
ERROR:このスレッドには書けません!
>>628
chmodは一切効いてなかったってことね… 引越し時に chmod で 777 にするんじゃなく
chown(でしたっけ?) 後 666 にすべきなのか?
ということは、引越し後の正しい呪文は
↓ chown("ch2あぼんあぼん");
chmod($filename,0666); 一般ユーザ(にsuexecされたCGI)がchownなんてできないと思うなぁ。 1000越えて書き込めていたのは確認した範囲では
去年以前に建立てられたスレのようだったし
今年に入ってから立てられたもので、1000ストッパーが
効いていないものってなかったような、、
サザンさんの>>628あたりに謎の答えがありそう、、、 古いスレを中心に、オーナーがおかしいやつがあるから、そいつら修正すればいいってこと?
(ストッパーが効かない原因のひとつ)
ディレクトリの持ち主がその人であれば「消す」ことはできるから、
例えばnobodyとかが持ち主のファイルを探して、一斉にこんなかんじにすればいいのかな。
(1000000000.dat のオーナーがおかしいとする)
cp -p 1000000000.dat tmp1000000000.dat
rm -f 1000000000.dat
mv tmp1000000000.dat 1000000000.dat
2行目でいきなりmv -fしてもいいけど、なんだかいやな予感がするんで。
find -user nobody とかして、該当のファイルについて一斉にやればよさそうな気がする。 FreeBSDでは、
cp -p 1000000000.dat tmp1000000000.dat
mv -f tmp1000000000.dat 1000000000.dat
でOKでした。Linuxでもやってみるか。 あ、そっか。Linuxでsuできる環境もってないや。
どなたか、実験きぼんぬ。
% mkdir test
% cd test
% sudo touch A
% cp -p A A.tmp
% mv -f A.tmp A
で、そのユーザのAになれば無問題。 >>637
古いスレでオーナーがおかしいやつの中で
1000間近なスレのURIがいくつか分かりますか? >>641
例えばbubbleサーバのnatsumeloj板なら、
find ./public_html/natsumeloj -user nobody -name \*.dat -print
なんてのを流せば、すぐわかるかと。
これをサーバの数分、板の数分やればいいかな。
ひまをみて、_service/を見て板名とってきてfindかけて、
オーナーをfixするためのshell scriptでも書いてみましょ。
できたら、各マシンで手分けして流していただくということで。 止まらなかった原因は単にchmodが効いてなかったってだけなのかー。 >>644
引っ越しのときにdatをchownするだけではダメですか? 移転の時は普通にファイルを移動してるだけなので、chownしなくてもいいはずです。>>647
というか、普通はこんなこと起きない気がしますね。< オーナが違う
途中でsuexec環境に変わった場合にのみ、起こるはず。
あるいはsuexecがバグっていて、「httpdのオーナーが抜けてきちゃった」場合とか。
# 経験したことあります。 移転しても移転しても書き込めるもよう。
>>645
これは「調子の悪い」とは違うと思うが。 >>648 補足。
> 移転の時は普通にファイルを移動してるだけなので、chownしなくてもいいはずです。>>647
理由: マシンをまたいだファイル移動の時に、オーナーが変わるから。 >649>651
ここで同じような報告を繰り返されてもご迷惑になるだけかと
>>639
drwxr-xr-x 2 (・∀・)ニヤニヤ users 4096 Mar 5 21:13 ./
drwxrwxrwx 15 root root 4096 Mar 5 21:11 ../
-rw-r--r-- 1 root root 0 Mar 5 21:12 A
-rw-r--r-- 1 (・∀・)ニヤニヤ users 0 Mar 5 21:12 A.tmp
[(・∀・)ニヤニヤ test]$ mv -f A.tmp A
[(・∀・)ニヤニヤ test]$ ls -la
合計 8
drwxr-xr-x 2 (・∀・)ニヤニヤ users 4096 Mar 5 21:14 ./
drwxrwxrwx 15 root root 4096 Mar 5 21:11 ../
-rw-r--r-- 1 (・∀・)ニヤニヤ users 0 Mar 5 21:12 A
[(・∀・)ニヤニヤ test]$
>>644
色々と考えられる事はあるのですが順番にやっていかないと
どれが原因か分からなくなりそうなので、まずこれから。。
見つかったスレに1000番目を書き込んだ時にこれ↓が表示されるかどうかが知りたかったんですよ。
>"ERROR!", "ERROR:このスレッドには書き込めません。最後の手段!!"
で、おそらく表示されるだろうとは思うのですが
1000 over を判定しているのはこれ↓を書き込む為にしているような、、
>"1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n"
cgiの最初の方でこれ↓しか見ていないのは負荷軽減の為だと思うのですが
1000を越えているかどうかを最初に見ればパーミッションがどうなっていようと
1000を越えているスレには書き込めないと思うのですけど、既出の問題なのかしら、、
>#.datが存在してないか書けないならばいばい >>653
drwxr-x--- 24 root root 4096 Mar 5 21:09 ./
drwxrwxrwx 21 root root 4096 Feb 25 12:56 ../
[(・∀・)ニヤニヤ root]$ mkdir test
mkdir: ディレクトリ `test' を作れません: 許可がありません
[(・∀・)ニヤニヤ root]$
>>653
さんくす。Linuxでも問題なさそうですね。
んじゃ、shell script作ってみます。
今日はJimさんデーの2日目なんで、明日以降になるかもしれませんが。 ここまで読んだ
引越し屋バンバンが地方営業なのがわかった 902のカーネルだけ、5.2.1-RELEASE-p1に上げてみた(i386モード)
しかし、状況は変わらず。 options AAC_DEBUG=3
とか入れてみるか。 うひょ。>>659-660 は派手な2連続誤爆だ。 1000越えて書き込まれてたスレ発見。
真・スレッドストッパーのガイドライン
http://that.2ch.net/test/read.cgi/gline/1022203584/l50
試しに書き込もうとしたら
ERROR:このスレッドには書き込めません。緊急緊急緊急!!
と出ました。
このスレが建ったのは2002年、>>636で書かれている去年以前に建ったスレ。
手を加えるならXXX 名前:書けませんよ。。。 投稿日:停止
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ と本当にスレッドストッパーかけてくださいと冗談言ってみる。 ギコナビで書き込もうとしたら
ERROR:このスレッドには書き込めません。緊急緊急緊急!!
と表示されているが実際には書き込まれてます。
こっちに誘導されて来ました
yournet.ne.jpの規制が先ほど解除されたのですがlive10の規制が解除されていないようです。
解除の方よろしくお願いします。
規制絡みの設定のひとつF22が入ってないんじゃない?>live10
【Project peko】2ch特化型サーバ構築作戦 Part8
http://qb3.2ch.net/test/read.cgi/operate/1078972549/
19 名前:root ★ 投稿日:04/03/11 13:36 ID:???
live10, f22への登録おながいします。>サザンさんかな。
【実況板】 live5/7/8/9 鯖 【専用スレッド】その4
http://qb3.2ch.net/test/read.cgi/operate/1078921755/359
まとめると1001突破するけどそのうち止まるってこと? >>625 ソース
>if($lognum > 1020)#最後の手段
↑
これを超えたら
>DispError("ERROR!", "ERROR:このスレッドには書き込めません。最後の手段!!");
それ以降は↓になるわけです。
>DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!"); 最後の手段が効いてるけど緊急緊急緊急は効いてないってことか
最初から$lognum > 1000で判定しない理由は何だっけ? 効いてないのは古いファイルが chmod(0555, $dattemp); 出来ていないから。
そこで 1020を超えた時点で条件に引っ掛けて、datファイルを新しいファイルにコピーして
そのファイルを chmod(0555, $dattemp); している。
その後今までの古い datファイルは消去。
新しいファイルはパーミッションが 0555 になっているので今度は「緊急緊急緊急」で分岐するというわけ。 http://qb3.2ch.net/test/read.cgi/operate/1069525567/528-
最近スレ移動の後のストッパーが聞いてなくて
書き込めてしまうのが続出してるみたいなんですが、
これもここに報告でいいんでしょうか? >>685
たぶん移転するためのcgiはbbs.cgiじゃないから
ここじゃないほうがいいかなぁ、、
まあ、もう書いちゃってるんで言ってもしょうがないですが。 う〜ん、ここで1000ストッパーの改造がはじまってから、
>>685の現象が多発するようになったので、
関係あるのかな?って思ったんですが、、、
ハテサテ >>685 >>687さんに同意で。。。
格段に多いですよ 移転痕ストッパー外れ。 スレスト、ゴミ箱移転跡が移転すると書き込めるようになるのは仕様です 1000ストップの判断をしたあとで書き込んだ方がいいと思うんだけど
そうしない理由って何かあるの? Perlで書けよな。
高速だし、柔軟性あるし、大抵のサーバーで動くし、機能的にも問題ない。
PHPでは絶対書くな。 >>691
2chのスクリプトはCじゃありませんでしたか?
俺の勘違いなのかのぅ。 ■ このスレッドは過去ログ倉庫に格納されています