この掲示板は,としき氏のスパム避け改造が施してあって,スパムの書込みはほとんどありません。 先日,久々にスパムが書き込まれたので,ログをダウンロードして書き直し,再アップしました。 掲示板の基本機能に指定発言を削除する機能があるのに,どうしてわざわざそんなことするのか? 何故って,単に削除するだけでは番号が飛んでしまうからなんです。そういう痕跡もイヤ。 なので,1発言削除したうえで次の新規発言番号を戻して,書込みがなかったことにするわけです。 = del1spam = by H_ear #if 0 Web Forumのログから最新発言を削除 #endif * mad for vz! 1 ^\ "" ?. #^ #< &n (r<1)?. ;削除する発言番号 a=d=r, &s mp[=2, ps[=pa, RX[-, mb-, #F &?("\x ^%d<>",d) #m #c (r==-1)?{ &m("削除対象発言がありません") >z } #b #> #> #d #y #^ #< :l ; ---- 次に新しい発言を探す ---- #F &?("\x ^%d<>",a--) #m #c (r==-1)?{ (a<2)?{ &m("次の番号がありません") >z } >l } #> #> (6){ &> } #b (-1){ #s (cd=='>')?{#d} } #G ;paにIPアドレスを取得 #s #s ps=pr, #b (-1){ #s (cd=='>')?{#d} } #G ;prにUNIX時間を取得 #^ #< #l &?("%d<>%s<>%s<>",a,pa,pr) #< &m("正常終了") :z ; ---- exit ---- RX], ps], mp], &d #] . 00: #s (cd!='<')?>^ * [Variables] d 削除する発言の番号 a 前の発言番号 [Buffers] pa 番号検索とIPアドレス取得 pr UNIX時間を取得 [History] 2006/05/21 0.10 1st ver. [Notes] 工夫した点は特になし。面倒だからできればいいのさ。 あ,もちろん,スパム投下の直後でないと使えませんので。 あと,発言番号が16ビットに収まってないとダメって気づいた。 まぁ,当面は問題にはならないから,対応は後でいいや。
> = del1spam = by H_ear
> UNIX時間,そのままで支障はないですか?
めざらさん、こちらではお久です。> 掲示板の基本機能に指定発言を削除する機能があるのに,どうしてわざわざそんなことするのか?> 何故って,単に削除するだけでは番号が飛んでしまうからなんです。そういう痕跡もイヤ。> なので,1発言削除したうえで次の新規発言番号を戻して,書込みがなかったことにするわけです。>> = del1spam = by H_ear> #if 0> Web Forumのログから最新発言を削除これはありがたい、参考になります。m(__)m 私は掲示板の管理画面からの削除機能を改造して、同じような動作にしています。 ただし> ;paにIPアドレスを取得> ;prにUNIX時間を取得この辺の処理は分からないので、手を付けずにそのままにしています。 上書きすれば問題ないかな、という考えです。 削除前にレスが付くと、番号が飛びます。 今となってはどこをどうしたかも分からないのですが、 いつか弄る時はこのマクロを参考にさせてもらいます。m(__)m
> 私は掲示板の管理画面からの削除機能を改造して、同じような動作にしています。
> いつか弄る時はこのマクロを参考にさせてもらいます。m(__)m
> え〜,そういうの教えてくださいよ。
> 掲示板の機能でできるに越したことはないですからね。当該マクロは,Web Forum は削除した番号が飛んでしまうので,仕方なくマクロで対応しているわけですから……
> としきさんも,ログ冒頭の UNIX TIME は無視しているみたいですから。
> LOGが壊れる可能性もあるので、削除前には、LOGをバックアップしますよね。
> バージョンって,違ってましたっけ….うわ,現時点は 8.0 か……げげ、もうそんなに上がってるんですか。 私のは一番古いと思います。 Web Forum v4.5 <wf_admin.cgi>> 今はスマートフォン対応だから画像も扱えるのですね.ふむ.この機能は欲しいかも。 でも今更一から改造し直すのは無理ですね。(^^; 一応私の改造部分を抜き出せたので、参考になるかわかりませんが 51行目 open(IN,"$logfile") || &error("Open Error: $logfile"); $top = <IN>; # 以下 3行追加 $topn = $top; if ($topn =~ /</) {$topn = $`;} print "$top $top2 $top1 \n"; while (<IN>) { 57行目 # if ($lx) { $sp=" " x $lx; } else { $sp=""; } if ($lx) { $sp=" " x $lx; } else { $sp=""; } 60行目 $msg =~ s/>/>/g; $ll = 100 - $lx * 2; # if (length($msg) > 60) { $msg = substr($msg,0,58); $msg .= '..'; } if (length($msg) > $ll && $lx > 0) { $msg = substr($msg,0,$ll); $msg .= '..'; } 67行目 # print "- <B>$nam</B> $dat 【$hos】$url $wr \n"; print "- <B>$nam</B> $dat 【$hos】\n"; # print "<dd>$sp<span style='font-size:11px;color:$no_color;'>$msg</span>\n"; print "<dd>$sp<span style='font-size:10px;color:$no_color;'>$msg</span>\n"; 253行目 open(IN,"$logfile") || &error("Open Error: $logfile"); $top = <IN>; # 以下 5行追加 $topn = $top; $top1 = 1; if ($topn =~ /</) {$topn = $`;} $top = substr($top,length($topn)); $top2 = $topn ; while (<IN>) { 261行目 foreach $del ( split(/\0/, $in{'no'}) ) { if ($del == $no || $del == $oya) { # 1行追加 if ($del == $topn && $del == $oya) {$topn--;} $flag=1; last; } # 1行追加 if ($top1 < $no && $no <= $topn) {$top1 = $no;} } 271行目 # ログを更新 # 以下 3行追加 $top2 = $topn; if ($top1 < $topn ) {$topn = $top1;} $top = $topn . $top; unshift(@new,$top);
> いやー,随分久々に admin.cgi を眺めましたが,もう一切いじれなくなっていますね。しばらく前は,職場で仕事用の掲示板を少し改造してみせたりして,それなりにヤレると思っていましたが,もうダメです。絶対ムリ。
> 教えていただいておいて申し訳ないですが,Perl は撤退ですね。
> 老後……てゆうか既に老後……に手が空いたら何か作ろうと思っていたのですが,Python なんかも手を出せないだろうなー。。。(涙)
> > バージョンって,違ってましたっけ….うわ,現時点は 8.0 か……
> げげ、もうそんなに上がってるんですか。
> 私のは一番古いと思います。
> 一応私の改造部分を抜き出せたので、参考になるかわかりませんが
> 57行目
> 67行目
> konnoさん、perlなんかわからないフリをして、まだまだ十分現役じゃありませんか。
> 私の場合、wforum.cgiのタイムスタンプは今年の3月。
> それの一つ前のバックアップは去年の10月。
> ところがなんと、wf_admin.cgiのタイムスタンプは2006年2月。
> 私も、全部きちんと追いかけていないのでアレなんですが、ちょっと気がついたところで、今回のツリーの話題とは違う改造の件が混ざっていませんか?
> > 57行目
> こことか
>
> > 67行目
> こことか。