■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 最新50 [PR]ぜろちゃんねるプラス[PR]  
レス数が1000を超えています。残念ながら全部は表示しません。

ぜろちゃんねるスクリプトを改造するスレ

1 :名無しさん@0ちゃんねる:2003/03/03 23:49 ID:ex.0cnXQ
ぜろちゃんねるスクリプトに、
haneやらkageやらdameやら
teletypeやらpreやらnukeanasanやら
おみくじやら何やらの機能を付けたりして改造するスレです。


601 :599:2006/01/09(月) 16:43:38 ID:???0
varda.pl 358行目あたり
if ($G->IsProxy($host)){

if ($G->IsProxy($host) && !$U->HasAuthority(19,$bbs)){

khazad.pl 2400行目あたり
'携帯からのスレッド作成','コテハン★表示','Samba規制解除'

'携帯からのスレッド作成','コテハン★表示','Samba規制解除','Proxy規制解除'

でいけると思う。適当にデバッグしてください。

602 :名無しさん@ぜろちゃんねる:2006/01/09(月) 23:51:51 ID:nmKV79po0
>>597
すいませんが
具体的に教えてくれませんか?

603 :598:2006/01/11(水) 19:04:03 ID:???0
>>601
ありがとうございます。
やってみたのですがなぜか弾かれてしまいました。orz

604 :599:2006/01/12(木) 00:22:37 ID:???0
>>603
こちらの環境では動作しています。
おそらく、管理画面でキャップグループの変更を忘れているのではないでしょうか。
管理画面->キャップグループ管理において、新たに'Proxy規制解除'が追加されているはずなので選択してみてください。

605 :vt ◆2AhTo3cK3M :2006/01/15(日) 15:21:07 ID:2KY7WZfU0
要望とかはここでいいのかな。。。

2ch掲示板では、名前欄に復帰を入れると”復帰”になります。
一応、この仕様も次期バージョンから入れるといいんじゃないかな。

module/galadriel.plの禁則文字変換 - ConvertCharacterに
$$data =~ s/復帰/”復帰”/g;
を書き加える感じで。

606 :名無しさん@ぜろちゃんねる:2006/01/15(日) 15:55:51 ID:???0
新機能要望スレ
http://0ch.mine.nu/test/read.cgi/jikken/1032096360/l50

一応こうゆうスレがあるけど、分かればいいんじゃないかな。

607 :名無しさん@ぜろちゃんねる:2006/01/17(火) 05:39:48 ID:???0
http://0ch.mine.nu/test/read.cgi/jikken/1043331322/795-798 の続き。
設定値と実際のログ保存数の食い違いを修正します。

vara.pl
sub IsRegulation

順に
$LOG->Search($host,1) → $LOG->Search($host,1,$oSET->Get('BBS_THREAD_TATESUGI'))
$LOG->Search($host,2) → $LOG->Search($host,2,$oSET->Get('timecount'))
$LOG->Search($host,1) → $LOG->Search($host,1,1)

peregrin.pl
sub Search

my ($data,$f) = @_;

my ($data,$f,$ln) = @_;

for ($i = $num - 1;$i >= 0;$i--){

for ($i = $num - 1;$i >= 0;$i--){
if($i == $num - $ln - 1){last;}

for ($i = $dat - 1;$i >= 0;$i--){

for ($i = $dat - 1;$i >= 0;$i--){
if($i == $dat - $ln - 1){last;}

↓つづく

608 :名無しさん@ぜろちゃんねる:2006/01/17(火) 05:42:03 ID:???0
peregrin.pl
sub Set

if ($kind == 1 && $nm >= $this->{'MAX'}){ $bf = 1; }
elsif ($kind == 2 && $nm >= $I->Get('BBS_THREAD_TATESUGI')){ $bf = 1; }
elsif ($kind == 3 && $nm >= $I->Get('timecount')){ $bf = 1; }

if ($kind == 1){ $bf = 1 + $nm - $this->{'MAX'}; }
elsif ($kind == 2){ $bf = 1 + $nm - $I->Get('BBS_THREAD_TATESUGI'); }
elsif ($kind == 3){ $bf = 1 + $nm - $I->Get('timecount'); }

if ($bf){
shift(@{$this->{'LOG'}});
$this->{'NUM'} --;
}

if ($bf >= 1){
splice(@{$this->{'LOG'}},0,$bf);
$this->{'NUM'} -= $bf;
}

以上。

609 :名無しさん@ぜろちゃんねる:2006/01/18(水) 07:21:59 ID:???0
ついでにひとネタ。
/datおよび/poolにて、
subject再作成(全更新)時に、元のsubject.txt/cgiがあれば、
その並び順を新しいsubject.txt/cgiに反映させる修正です。
全更新の際にスレの並び順がリセットされなくなります。

baggins.pl
BILBO::UpdateAll および FRODO::UpdateAll

370行目、および714行目の
my (@dirSet,$id,$base,$n,$num,$first,$dumy,$subj);
と、372行目、および716行目の
undef($this->{'SUBJECT'});
の間、2ヵ所それぞれに以下を追加

my @sort;
if ($this->{'NUM'}){
@sort = @{$this->{'SORT'}};
}

↓つづく

610 :名無しさん@ぜろちゃんねる:2006/01/18(水) 07:23:12 ID:???0
384〜403行目、および728〜747行目の
foreach $el (@dirSet){
 (省略)
}
と、404行目、および748行目の
$this->{'NUM'} = $num;
の間、2ヶ所それぞれに以下を追加

if ($this->{'NUM'}){
foreach $dumy (@sort){
$n = 0;
foreach $id (@{$this->{'SORT'}}){
if ($id eq $dumy){
splice(@{$this->{'SORT'}},$n,1);
push(@{$this->{'SORT'}},$id);
last;
}
$n++;
}
}
}

以上
バージョンは051231です。

611 :名無しさん@ぜろちゃんねる:2006/01/18(水) 20:44:20 ID:???0
>>609-610
041030でもできますか?

612 :名無しさん@ぜろちゃんねる:2006/01/23(月) 21:44:05 ID:aOE6EDHs0
(=゚ω゚)ノぃょぅ
君たちには一生童貞になる催眠術をかけた。
しかし君たちは運がいい。

http://music4.2ch.net/test/read.cgi/suisou/1131629001/

↑このスレに


「相手の意思など関係ない、それがVIP Quality」


と書き込めば催眠術は解ける。
では、健闘を祈る。


613 :名無しさん@ぜろちゃんねる:2006/01/26(木) 05:29:53 ID:m9Q2412EO
041030を使っています。
特定の携帯のサブスクライバIDからの書き込みを弾きたいのですが、どうすればいいのでしょうか?

614 :◆hikArinCL2 :2006/01/26(木) 22:53:07 ID:???0
galadriel.plのGetRemoteHost関数にある
$HOST .= "<$HOST2>" if ($HOST2);
の下に次のコードを書き足せばホストの前にauのサブスクライバIDが
加えられるのでアクセス規制編集でそのサブスクライバIDを追加する

if ($ENV{'HTTP_USER_AGENT'} =~ /UP\.Browser/) {
$HOST = join ' ', $ENV{'HTTP_X_UP_SUBNO'}, $HOST;
}

615 :名無しさん@ぜろちゃんねる:2006/01/27(金) 13:14:36 ID:kQnjPJ8gO
>>614
ありがとうございます。やってみます。

616 :名無しさん@ぜろちゃんねる:2006/01/28(土) 02:32:43 ID:6BueJLd20
ロボット検索逃れのつもりでbbs.cgiの
「# HTMLヘッダの出力」の項目の2行目「$Page->Print('<html><head>」以降に
<mata NAME="Robots" CONTENT="noindex, nofollow"> を追記しアップロード(上書き)して
レスやスレッド作成しましたがhtmlの方へは反映されませんでした。

どうすればよいのでしょうか

617 :名無しさん@ぜろちゃんねる:2006/01/28(土) 03:24:49 ID:???0
>>616
バージョン書け

618 :名無しさん@ぜろちゃんねる:2006/01/28(土) 13:23:37 ID:XHDG5DuY0
test051231です

619 :名無しさん@ぜろちゃんねる:2006/01/28(土) 14:04:37 ID:???0
>>618
index.htmlが作成されるのはvarda.plだ。
そっちを変更しろ。

620 :613:2006/01/29(日) 19:19:28 ID:PQffHna20
>>614
DoCoMoやVodaの端末固有番号で規制することも可能でしょうか?

621 :◆hikArinCL2 :2006/02/03(金) 00:17:23 ID:???0
>>616
[各種編集] -> [META情報の編集]
でロボット回避のタグを埋め込む

>>620
(動作保障はなし)
my $agent = $ENV{'HTTP_USER_AGENT'};
if ($agent =~ /DoCoMo/) {
my $serial = '00000000000'; # ダミー
if ($agent =~ m|/ser(\w{11})$|) {
$serial = $1;
}
elsif ($agent =~ /;ser(\w{15});/) {
$serial = $1;
}
$HOST = join ' ', $serial, $HOST;
}
elsif ($agent =~ /UP\.Browser/) {
$HOST = join ' ', $ENV{'HTTP_X_UP_SUBNO'}, $HOST;
}
elsif ($agent =~ /^Vodafone/) {
$HOST = join ' ', ([split(/\//,$agent)]->[4]), $HOST;
}
elsif ($agent =~ /J-PHONE/) {
$HOST = join ' ', ([split(/\//,$agent)]->[3]), $HOST;
}

622 :名無しさん@ぜろちゃんねる:2006/02/03(金) 02:04:27 ID:???0
>>621
横レスすみません
>>614のあとに続けて記述すればいいのでしょうか?

623 :名無しさん@ぜろちゃんねる:2006/02/03(金) 08:56:43 ID:???0
>>621
Vodafoneの一部の機種には、UAに'UP.Browser'を含むものがあるので、
先にVodafoneの振り分けをしたほうがいいです。

>>622
君は改造とかしないであきらめたほうがいいよ。

624 :613:2006/02/04(土) 16:21:09 ID:???0
>>621>>623
ありがとうございます。
試してみましたが、「00000000000」がそのままホストの前に表示されてしまいました。
auやVodafone、J-PHONEでは未確認です。解決策、並びに
携帯からの書き込みの場合、IDをホストからではなく端末固有番号から生成する方法を
もしご存知でしたらご教授頂ければ幸いです。
重ね重ね済みません。

625 :名無しさん@ぜろちゃんねる:2006/02/04(土) 16:39:13 ID:???0
utn

626 :名無しさん@ぜろちゃんねる:2006/02/26(日) 17:09:18 ID:???0
>>470を参考にして、自動で新スレを立てるプラグインを作ろうとして、
今の仕様では出来ないことがわかりました。
(他のプラグインを一切使用しないのなら使えますが。)
いちおう、不具合報告しとこう。

627 :626:2006/02/28(火) 19:27:27 ID:???0
その後よく考えたら前の仕様でも出来ることがわかりました。(ぉ
でも不具合だったことは確かなのでまぁいいかなと。

そんなこんなで作ってみました。
指定レス数の書き込みがあると自動で新スレを立てるプラグインです。
http://a1or4qsl6.hp.infoseek.co.jp/okiba/index.html

628 :名無しさん@ぜろちゃんねる:2006/03/01(水) 00:42:16 ID:???0
>>627
面白いですね。実況とかに使えそう。
使わせていただきます。

629 :名無しさん@ぜろちゃんねる:2006/03/14(火) 20:45:06 ID:???0
レスのポップアップ表示ほしい

630 :663 ◆fnwcOWFi56 :2006/03/28(火) 19:44:25 ID:???0
>>38さんの真似をして
0chスクリプトを英訳化してみました。

http://mirror.s151.xrea.com/0ch_utf8/

ごめんなさい

631 :名無しさん@ぜろちゃんねる:2006/03/28(火) 23:41:51 ID:???0
>>630
改造とか再配布とかはOKなんで、べつにあやまらなくてもいいんじゃない?



。。どうせなら最新版で。

632 :名無しさん@ぜろちゃんねる:2006/03/28(火) 23:43:15 ID:???0
と思ったら060227みたいですね。スマソ。

633 :名無しさん@ぜろちゃんねる:2006/04/14(金) 20:23:37 ID:???0
スレが1000に達したときのようにスレの容量が設定値を超えたときに
レスを挿入してスレストってできませんかね?

634 :名無しさん@ぜろちゃんねる:2006/04/15(土) 14:19:19 ID:???0
>>633
掲示板設定→0chオリジナル設定
でdatサイズの制限は可能。

635 :名無しさん@ぜろちゃんねる:2006/04/15(土) 16:17:17 ID:???0
>>634
いや、そうではなくて
容量をオーバーしたときは1001と違って何も挿入されなくて味気ないものだから
1001と同じように「容量オーバーしました」的なレスを入れることが出来ないかなと思いまして。

636 :名無しさん@ぜろちゃんねる:2006/05/03(水) 19:05:06 ID:???0
.htaccessでアクセス規制をかけているディレクトリ内で
スクリプトを使用したいものです。
現在のジャンプする仕様だとリフレッシュがかかり
書き込み後にトップに戻れずはじかれてしまいます。
どのような改造をすればよいのでしょうか。
過去ログに紹介されていたplファイルが見当たらなくて質問致しました。

ご教授お願いします。

637 :名無しさん@ぜろちゃんねる:2006/05/19(金) 04:41:37 ID:???0
test060227にて、DoCoMo同様、各キャリアの端末固有情報を取得するように、
bbs.cgiのsub GetProductInfoを書き換えてみました。

>>621の◆hikArinCL2さんの記述も参考にさせていただきました。
(というか大分パクリました)

(キャリアの判別はUAではなくIPアドレスから行うべき、という話はひとまず置いておいて、)
一応テストしてみた限りでは期待通りに動作するようですが、
何か指摘などあったらよろしく。
なお実際に使用して不具合があっても、もちろん責任は取りません。

必要な修正:
http://0ch.mine.nu/test/read.cgi/jikken/1120050851/314
および、bbs.cgi 133行目あたり
my $product = GetProductInfo($Sys->{'CONV'},$ENV{'HTTP_USER_AGENT'});

my $product = GetProductInfo($Sys->{'CONV'},$ENV{'HTTP_USER_AGENT'},$ENV{'HTTP_X_UP_SUBNO'});

638 :637:2006/05/19(金) 04:43:28 ID:???0
sub GetProductInfo
{
my ($oConv,$agent,$subno) = @_;
my $product = undef;
my @ca = split(/\//,$agent);

if($agent =~ /DoCoMo/){
if($agent =~ /\/ser(\w{11})$/){$product = $1;}
elsif($agent =~ /;ser(\w{15});/){$product = $1;}
}
elsif($agent =~ /Vodafone/){
if($ca[3] !~ / /){$product = [split(/ /,$ca[4])]->[0];}
}
elsif($agent =~ /J-PHONE/){
if(@ca == 3){}
elsif($ca[2] !~ / /){$product = [split(/ /,$ca[3])]->[0];}
}
elsif($agent =~ /^MOT-/){}
elsif($agent =~ /UP\.Browser/){
$product = $subno;
}
else{
$product = $oConv->GetRemoteHost(); return $product;
}

if(!$product){return undef;}
$product =~ s/[^.-\w]//g;
$product = join(' ',$product,$oConv->GetRemoteHost());
return $product;
}

639 :637:2006/05/21(日) 04:27:43 ID:???0
# DoCoMoはやっぱりserも含めとくか。
# /(ser\w{11})$/ /;(ser\w{15});/


>>638の形で端末番号を記録したら、
そこからIDを作ってみました。

GALADRIEL::MakeIDに、番号を適当に切ってIPアドレスっぽい形にして渡す:

galadriel.pl sub MakeID 内
my ($server,$column) = @_; → my ($server,$addr,$column) = @_;
@nums = split(/\./,$ENV{'REMOTE_ADDR'}); → @nums = split(/\./,$addr);

vara.pl sub Write 内
$id = $oConv->MakeID($oSys->Get('SERVER'),8);

my $addr;
if($oSys->Equal('AGENT',0) || $oSys->Equal('AGENT',4)){
$addr = $ENV{'REMOTE_ADDR'};
}else{
$addr = (split(/[ ._]/, $oForm->Get('HOST')))[0];
$addr = join('.',(substr($addr,7,2),substr($addr,3,3),substr($addr,-7,3),substr($addr,-3)));
}
$id = $oConv->MakeID($oSys->Get('SERVER'),$addr,8);


番号を切り出す位置は全く適当です。
端末が違ってもほとんど値が変わらない桁があるかもしれないので、
IDの重複が現れるようなら、切り出す位置を適当に変えてみるといいでしょう。

640 :名無しさん@ぜろちゃんねる:2006/06/03(土) 05:05:02 ID:???0
スレッド924についてちょっと考えてみました。

キャップ権限の種類を増やしてみる:
bbs.cap.pl
280行目 18 → 19
323行目 追加
$Page->Print("<input type=checkbox name=C_TH924 $authNum[18] value=on>スレッド924作成・書き込み<br>");
508行目 追加
$authNum[18] = $Form->Equal('C_TH924','on') ? 1 : 0;
509行目 19 → 20

このキャップでスレを立てるとキーが924〜になる:
vara.pl sub IsRegulation 387行目
if ($oSYS->Equal('MODE',1)){
の次に追加
if ($oSEC->IsAuthority($capID,19,$bbs)){
$this->{'FORM'}->Set('KEY','9240000001');
$oSYS->Set('KEY',$this->{'FORM'}->Get('KEY'));
}

↓つづく

641 :名無しさん@ぜろちゃんねる:2006/06/03(土) 05:07:28 ID:???0
キャップ無しで924スレに書き込もうとするとスレが上がる:
vara.pl sub IsRegulation 345〜348行目
# 移転スレッド
if (ARAGORN::IsMoved($datPath)){ return 202; }
の次に追加
# スレッド924
if (int($oSYS->Get('KEY') / 10000000) == 924){
if (!$oSEC->IsAuthority($capID,19,$bbs)){
$this->{'THREADS'}->AGE($oSYS->Get('KEY'));
$this->{'THREADS'}->Save($oSYS);
if (!$oSYS->Equal('FASTMODE',1)){
require('./module/varda.pl');
my $BBSAid = new VARDA;
eval{
$BBSAid->Init($oSYS,$oSET);
$BBSAid->CreateIndex();
$BBSAid->CreateIIndex();
$BBSAid->CreateSubback();
};
}
return 210;
}
}

info/errmsg.cgiにエラーメッセージを追加:
210<>書き込み禁止<>このスレッドには書き込めません。

# indexは更新しなくてもいいかなぁ。

↓つづく

642 :名無しさん@ぜろちゃんねる:2006/06/03(土) 05:09:41 ID:???0
一定時間ごとに上がるってのは、たぶん難しいだろうから、
かわりに、書き込みの際にsubject.txtを読むときに、924スレを上のほうに持ってくる:

baggins.pl sub Load
83行目
my ($Sys) = @_;

my $Sys = shift;
my ($f) = @_; # 無ければ未定義

103〜104行目
push(@{$this->{'SORT'}},$elem[0]);
$num ++;

if($f && int($elem[0] / 10000000) == 924){
unshift(@{$this->{'SORT'}},$elem[0]);
}else{
push(@{$this->{'SORT'}},$elem[0]);
}
$num ++;

vara.pl 70行目
$this->{'THREADS'}->Load($Sys);

$this->{'THREADS'}->Load($Sys,1);


# datファイルを直接アップロードして、レス書き込みはしないという条件なら、
この部分の改造と、パーミッションでスレストかけるだけで十分な気がします。

643 :名無しさん@ぜろちゃんねる:2006/06/04(日) 15:06:15 ID:???0
>>633

vara.pl sub Write

if (($resNum = ARAGORN::GetNumFromFile($datPath)) >= $oSys->Get('RESMAX')){
# datにOVERスレッドレスを書き込む
Get1001Data($oSys,\$data);
ARAGORN::DirectAppend($oSys,$datPath,$data);
$resNum ++;
}
elsif($oSet->Get('BBS_DATMAX') && (int((stat($datPath))[7] / 1024) > $oSet->Get('BBS_DATMAX'))){
ARAGORN::DirectAppend($oSys,$datPath,'over<><>ID:over<>size over<>'."\n"); $resNum ++;
}

644 :名無しさん@ぜろちゃんねる:2006/06/06(火) 00:48:20 ID:???0
>>643
どうもありがとうございました。大事に使わせていただきます。

645 :名無しさん@ぜろちゃんねる:2006/06/12(月) 04:12:50 ID:???0
キャップパス入力の際は'#'でも'#'でも可という仕様ですが、
S-JISで'#'でない\x81\x94に誤ってマッチして表示に影響する可能性があるので
その対策を考えてみました。

060227 vara.pl sub ReadyBeforeCheck 内

# キャップパスの抽出と削除
my $f = -1;
if (index($mail,'#') == -1){
$f = index($mail,'#');
}else{
my $char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
$mail =~ s/^($char*?)#(.*)$/\1#\2/;
$f = index($mail,'#');
}
if(($f > -1) && ($f < length($mail) - 1)){
my ($capPass,$capID);
($mail,$capPass) = split(/#/,$mail,2);
# キャップ情報設定
$capID = $this->{'SECURITY'}->GetCapID($capPass);
if ($capID){
$Sys->Set('CAPID',$capID);
}
$Form->Set('mail',$mail);
}

あるいは、単に
$mail =~ s/#/#/; → $mail =~ s/#/ #/;
と、2バイトに置き換えるだけでいいかも。

646 :名無しさん@ぜろちゃんねる:2006/06/12(月) 04:17:55 ID:???0
Jcode.pmが使える環境という前提で、Firefoxのクッキー文字化け対策として、
CookieをUTF-8でエンコードしてみる試み。(test060227)

radagast.pl
sub Set
{
my $this = shift;
my ($key,$value) = @_;
use Jcode;
Jcode::convert(\$value,'utf8','sjis');
$value =~ s/(\W)/'%'.unpack('H2',$1)/eg;
$this->{'COOKIE'}->{$key} = $value;
}

sub Get
{
my $this = shift;
my ($key) = @_;
use Jcode;
my $val = $this->{'COOKIE'}->{$key};
$val =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
Jcode::convert(\$val,'sjis','utf8');
$val =~ s/\r|\n|\0//g; $val =~ s/"/"/g;
$val =~ s/</</g; $val =~ s/>/>/g;
return $val;
}

↓つづく

647 :名無しさん@ぜろちゃんねる:2006/06/12(月) 04:28:34 ID:???0
訂正。
(この部分が必要なのかどうか実はよくわからないのですが。)

$val =~ s/\r|\n|\0//g; $val =~ s/"/&quot;/g;
$val =~ s/</&lt;/g; $val =~ s/>/&gt;/g;

↓つづき

sub Print 内
$oOut->Print("return(unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1)));");

$oOut->Print("return(decodeURIComponent(tmp2.substring(xx3 + 1, xx2 - xx1 - 1)));");


エンコードされてないクッキーを持ってる人が更新後のindexを開くとスクリプトエラーが出ます。
JavaScriptの知識がないので回避策はよくわかりません。
フォーム空で一度投稿して、エラー画面でクッキーの書き換え、とか。

648 :名無しさん@ぜろちゃんねる:2006/06/15(木) 07:13:34 ID:???0
r.cgiでh無しのアドレスをリンクにします。(ftpは無視)
060227 galadriel.pl
sub ConvertURL

$reg1 = q{(https?|ftp)://(([-\w.!~*'();/?:\@=+\$,%#]|&(?![lg]t;))+)};
$reg2 = q{<(https?|ftp)::(([-\w.!~*'();/?:\@=+\$,%#]|&(?![lg]t;))+)>};

$reg1 = $mode ?
q{(?:h?)(ttps?)://(([-\w.!~*'();/?:\@=+\$,%#]|&(?![lg]t;))+)}:
q{(https?|ftp)://(([-\w.!~*'();/?:\@=+\$,%#]|&(?![lg]t;))+)};
$reg2 = $mode ?
q{<(h?ttps?)::(([-\w.!~*'();/?:\@=+\$,%#]|&(?![lg]t;))+)>}:
q{<(https?|ftp)::(([-\w.!~*'();/?:\@=+\$,%#]|&(?![lg]t;))+)>};

if ($mode){
$$text =~ s{$reg1}{<$1::$2>}g;

if ($mode){
$$text =~ s{$reg1}{<h$1::$2>}g;

649 :名無しさん@ぜろちゃんねる:2006/06/15(木) 23:50:32 ID:???0
search.cgiの検索結果の表示をGoogle風にしたいんですが、
誰かPerlで書いていただけませんか?

650 :名無しさん@ぜろちゃんねる:2006/06/16(金) 01:28:19 ID:???0
>>649
マルチ

ぜろちゃんねるスクリプト総合質問スレ Part7
http://0ch.mine.nu/test/read.cgi/jikken/1120050851/712

712 名前:名無しさん@ぜろちゃんねる[age] 投稿日:2006/06/14(水) 15:39:21 ID:???0
search.cgiの検索結果の表示をGoogle風にしたいんですが、
どうしたらいいでしょうか?



651 :名無しさん@ぜろちゃんねる:2006/06/16(金) 01:29:50 ID:???0
>>650
いや、誘導されてきたんだろ。

652 :名無しさん@ぜろちゃんねる:2006/06/16(金) 02:00:13 ID:???0
ごめん、まちがえたよ

653 :名無しさん@ぜろちゃんねる:2006/06/16(金) 04:30:15 ID:???0
r.cgiで、自鯖内のread.cgiへのリンクをr.cgiに変更します。
060227 galadriel.pl
sub ConvertURL

$$text =~ s{$reg2}{<a href="$1://$2">$work[0]</a>};

$$text =~ s{$reg2}{<a href="$1://$2">$work[0]</a>};
$$text =~ s/(<a href="$server\/test\/)read(\.cgi[?\/])/\1r\2/g;

654 :649:2006/06/16(金) 17:52:47 ID:???0
>>651
そうです。誘導されてここに来ました

自分でもいじってはみたんですがよく分からなくて…
どなたか教えては頂けませんか?

655 :名無しさん@ぜろちゃんねる:2006/06/20(火) 23:05:02 ID:???0
広告をローテーションするなどプログラムで処理したいのですが、bannerpc.cgi
からテキストとして読み込んでいるみたいなので、無理ですよね??

656 :名無しさん@ぜろちゃんねる:2006/06/21(水) 05:56:08 ID:???0
>>655
bannerpc.cgi等を複数用意しといて、
呼び出すファイル名を変える。

657 :名無しさん@ぜろちゃんねる:2006/06/21(水) 20:16:02 ID:???0
>>656
ありがとうございます。広告ローテーションはそれでいけそうです。

その板のスレッドを単語を分析してもっとも多い単語をECSに渡して、そのスレッドに
関係ある商品を表示する 
みたいなことだと、呼び出し側をかなり改造しないとですよね。

658 :名無しさん@ぜろちゃんねる:2006/06/22(木) 10:21:32 ID:P3NYi7VYO
携帯からもURLをクリックしたらクッションページを経由させれないですかね?
スクリプトは最新版です

659 :名無しさん@ぜろちゃんねる:2006/06/22(木) 23:16:38 ID:???0
<a href="$1://$2"> → <a href="$1://$cushion$2">

660 :名無しさん@ぜろちゃんねる:2006/06/24(土) 13:46:37 ID:???0
BBQ、BBMとかってどうやって設定するの?

661 :名無しさん@ぜろちゃんねる:2006/06/26(月) 00:16:46 ID:???0
最新版 nazguls.plの70行目の
$path = '.' . $Sys->Get('INFO') . '/bbss.cgi';

このbbss.cgiってbbs.cgiのタイプミスでしょうか?

662 :名無しさん@ぜろちゃんねる:2006/06/26(月) 00:37:28 ID:???0
>>661
http://0ch.mine.nu/test/search.cgi?MODE=BBS&BBS=jikken&KEY=&WORD=bbss.cgi&TYPE=2

663 :名無しさん@ぜろちゃんねる:2006/06/26(月) 21:49:30 ID:???0
>>662
あ〜なるほど。そういうことか。
ろくに調べもせず尋ねてすませんです

664 :名無しさん@ぜろちゃんねる:2006/06/29(木) 14:35:48 ID:???O
携帯からの書き込みでIDを固定させるには端末情報を取得するだけでいいんですかね?

665 :7M. ◆dq7M./4Uw. :2006/06/29(木) 20:17:09 ID:???0
>664
端末情報を取得し、それからIDを生成すればよろし。

666 :名無しさん@ぜろちゃんねる:2006/06/29(木) 22:04:18 ID:???0
>>665
sub GetRemoteHost
{
my $this = shift;
my ($HOST,$HOST2);

$HOST = $ENV{'REMOTE_ADDR'};
$HOST2 = $ENV{'HTTP_X_UP_SUBNO'};

sub MakeID
{
my $this = shift;
my ($server,$column) = @_;
my @times = localtime(time());
my (@nums,$ret,$host,$str);

# 種の生成
@nums = split(/\./,$ENV{'HTTP_X_UP_SUBNO'});

こうですかね?

667 :7M. ◆dq7M./4Uw. :2006/06/30(金) 01:15:52 ID:???0
$ENV{'HTTP_X_UP_SUBNO'}
こんな環境変数あったのか。知らなかった。(素
正確には、こいつの上4桁を取り除いた物を種に放り込めばいいと思うのです。
#まぁ上4桁引きちぎるのも実際はいらないかもしれない。
0chのソースは良く知りませんが、@numsってゆーのからIDを生成してるなら、
そいつにそのまま$ENV{'HTTP_X_UP_SUBNO'}を放り込んでやればいいんぢゃないですかね。
多分。

668 :7M. ◆dq7M./4Uw. :2006/06/30(金) 01:19:52 ID:???0
…と、よく見てみたら$ENV{'HTTP_X_UP_SUBNO'}はEZweb限定?
全機種でやらせるなら、携帯かどうかをUSERAGENTから識別してから、
utnで送信させた端末固有番号をcryptかけた方がよさそう?

669 :名無しさん@ぜろちゃんねる:2006/07/05(水) 03:15:17 ID:???0
http://0ch.mine.nu/test/read.cgi/jikken/1120050851/829 の後半を見て
ちょっと弄ってみました。

test060227 thread.res.pl

(1)
my @log,$log; Load_log($Sys,\@log); Check_dat($Dat,\@log); $log = @log;
require('./module/galadriel.pl');

(2)
if ($log && $Dat->Size() - $i <= $log) {Add_log(\$elem[3],\$log[$log - ($Dat->Size() - $i)]);}

(3)
if ($log && $Dat->Size() - $num <= $log) {Add_log(\$elem[3],\$log[$log - ($Dat->Size() - $num)]);}


238〜241行目、358〜361行目、418〜421行目の、

# レス一覧を出力
(略)
@elem = split(/<>/,$$pRes);

を、それぞれ(1)(2)、(1)(3)、(1)(3)で挟む。

↓続く

670 :名無しさん@ぜろちゃんねる:2006/07/05(水) 03:15:40 ID:???0
適当なところに以下を追加。
sub Load_log{
my ($Sys,$log) = @_;
my $logPath = $Sys->Get('BBSPATH') . '/' . $Sys->Get('BBS') . '/log/' . $Sys->Get('KEY') . '.cgi';
eval{ if (-e $logPath){
open(LOGFILE,"< $logPath");
binmode(LOGFILE);
@$log = <LOGFILE>;
close(LOGFILE);
}};
}
sub Add_log{
my ($elem,$logline) = @_;
chomp($$logline);
if($$logline eq 'Over'){$$elem .="<br>[$$logline]"; return;}
my @logline = split(/<>/, $$logline);
$logline[0] = GALADRIEL::GetDateFromSerial(undef,$logline[0],0);
$logline[1] .= 'byte';
$logline = join('<>', @logline);
$$elem .="<br>[$logline]";
}
sub Check_dat{
my ($Dat,$log) = @_;
my $pRes = $Dat->Get($Dat->Size() - 1);
if ((split(/<>/, $$pRes))[2] =~ m/Over/i ){
push(@$log, 'Over');
}
}

↓続く

671 :名無しさん@ぜろちゃんねる:2006/07/05(水) 03:17:22 ID:???0
上手くいけば、レス削除画面で、
レス書き込みログ保存分だけ、↓こんなふうに表示されます。

 11:名無しさん@ぜろちゃんねる:2006/07/05(水) 21:10:10
    test
    [2006/07/05 21:10<>4byte<>0ch BBS 2006-02-27<>(ホスト)]

しかしスレッド内に透明あぼ〜んがあるとズレます。

672 :名無しさん@ぜろちゃんねる:2006/07/10(月) 23:50:12 ID:???0
>>671
ありがとう!!
助かりました!!
ただ今後、
できれば透明あぼーんありでも対応してもらえると助かります。

673 :名無しさん@ぜろちゃんねる:2006/07/12(水) 03:44:41 ID:???0
datとlogに記録された時間を照合して、合わなかったら透明あぼーんがあったとみなして、
その分のログを除外する、とすると、

(1)
my @log,$log; Load_log($Sys,\@log); $log = @log; if($log){Check_dat($Sys,$Dat,\@log,\$log)};
require('./module/galadriel.pl');


sub Check_dat{
my ($Sys,$Dat,$log,$lognum) = @_;
my $pRes = $Dat->Get($Dat->Size() - 1);
my $over = 'Over';
if ((split(/<>/, $$pRes))[2] =~ m/Over/i ){
push(@$log, $over); $$lognum++;
}
my ($Setting,$abone);
require('./module/isildur.pl');
$Setting = new ISILDUR;
$Setting->Load($Sys);
$abone = $Setting->Get('BBS_DELETE_NAME');
use Time::Local;
my $logline, @res, $wtime;
$f = $$lognum;
while($f){
$pRes = $Dat->Get($Dat->Size() - $$lognum + $f - 1);
@res = split(/<>/,$$pRes);
$logline = $$log[$f - 1];
if($res[2] ne $abone && $logline ne $over){
$res[2] =~ /(\d{4})\/(\d{2})\/(\d{2}).*? (\d{2}):(\d{2}):(\d{2})/;
$wtime = timelocal($6,$5,$4,$3,$2 - 1,$1 - 1900);
if(abs($wtime - (split(/<>/, $logline))[0]) > 0){splice(@$log, $f - 1, 1); $$lognum--;}
}
$f--;
}
}

一見、上手く行ったように見えるかもしれないけど、たぶん不具合出るよ。
datとlogに書き込まれるのは同時じゃないからね。
一切、責任は持ちません。

674 :名無しさん@ぜろちゃんねる:2006/07/12(水) 03:53:19 ID:???0
ついで。
透明あぼーんをしてスレッドのレス数が減った場合、
同時にsubject.txtを更新する。

sub FunctionResDelete


push(@$pLog,$abone);

return 0;



push(@$pLog,$abone);
if (!$mode){
require('./module/baggins.pl');
$Threads = new BILBO;
$Threads->Load($Sys);
$Threads->Update($Sys);
$Threads->Save($Sys);
push(@$pLog,"スレッド情報(subject.txt)を更新しました。");
}
return 0;

675 :名無しさん@ぜろちゃんねる:2006/07/13(木) 10:37:32 ID:9TrxkJpwO
060227
携帯表示でレスコピー(写)を付けるには
r.cgiのsub PrintReadMenuとsub PrintResponseを弄るだけでいいのですかね?
例えば
my $pathcopy = $Sys->{'CONV'}->CreatePath($oSYS,1,$bbs,$key,'l10');

$Page->Print("<textarea=$pathcopy</textarea>\n");

こんな感じなのですかね?

676 :名無しさん@ぜろちゃんねる:2006/07/18(火) 18:02:17 ID:???0
全板一括アク禁できませんか?
一つ一つやるのは無駄にダルイです汗


677 :名無しさん@ぜろちゃんねる:2006/07/18(火) 18:59:31 ID:???0
質問スレに同様の書き込みがあったなぁ。

678 :名無しさん@ぜろちゃんねる:2006/07/18(火) 21:02:04 ID:???0
2ch専用ブラウザで閲覧した時はレスアンカー(>>***)はポップアップするじゃないですか。
それを通常のブラウザ(スレイプニルとか火狐とか)でポップアップ出来る様にしたいんですが出来るでしょうか?

可能であれば、是非是非やり方を教えて欲しいのですが。。。お願いします。

679 :名無しさん@ぜろちゃんねる:2006/07/20(木) 01:56:37 ID:???0
060227を使わせてもらっています。
落ちたスレをクリックしたとき、2000000000.datじゃなくて
旧バージョンみたいにpoolやkakoに有るか無いかを調べて、
隊長!過去ログ倉庫に○○.htmlを発見しました!
みたいに表示させるにはどうしたら良いでしょうか?

680 :名無しさん@ぜろちゃんねる:2006/07/20(木) 20:48:02 ID:???0
>>679
落ちたスレのアドレスに直接アクセスする、とか?

試した事ないから分からんけど、多分これでいいかも

681 :名無しさん@ぜろちゃんねる:2006/07/20(木) 23:28:31 ID:???0
最小限の改造で、レスコピーらしきものを可能にさせてみる。
まぁ、これだけで満足する人はいないと思うけど。

sub PrintResponse
{
my ($Sys,$Page,$n) = @_;
my ($pDat,@elem);
$pDat = $Sys->{'DAT'}->Get($n -1);
@elem = split(/<>/,$$pDat);
$elem[3] =~ s/<br>/\n/g;
if($elem[1] ne ''){$elem[1] ='['.$elem[1].']';}
foreach (@elem) {$_ =~ s/<.*?>//g;}
$Page->Print("<form><textarea>$n:$elem[0] :$elem[2]$elem[1]\n$elem[3]</textarea></form>");
}

>>675
そんな記述で「こんな感じ」が他人に伝わると思ってんのかね。

682 :名無しさん@ぜろちゃんねる:2006/07/21(金) 00:57:24 ID:???0
675じゃないけど>>681を使わせてもらったら、スレが見えなくなってしまった。(最新版)
他のお方はどうでしょうか?

683 :名無しさん@ぜろちゃんねる:2006/07/21(金) 01:10:58 ID:???0
>>682
具体的にどのファイルの何行目〜何行目を入れ替えたのか言ってみ。

684 :名無しさん@ぜろちゃんねる:2006/07/21(金) 01:28:13 ID:???0
>>683
r.cgiの320行目から331行目の
sub PrintResponse
{
my ($Sys,$Page,$n) = @_;
my ($oSYS,$oConv,$pDat,@elem,$maxLen,$len);

$oSYS = $Sys->{'SYS'};
$oConv = $Sys->{'CONV'};
$pDat = $Sys->{'DAT'}->Get($n -1);
@elem = split(/<>/,$$pDat);
$len = length($elem[3]);
$maxLen = $Sys->{'SET'}->Get('BBS_LINE_NUMBER');
$maxLen = int(($maxLen / 2) * 20);
>>681の物とごっそり入れ替えたんですが・・・見当外れな部分に入れているでしょうか。
すいません、実は正直よく分からないのに手を出してしまいました・・・。

685 :名無しさん@ぜろちゃんねる:2006/07/21(金) 02:07:55 ID:???0
>>685
それで何の疑問も持たないのなら改造に手を出すのはまだ早いな。諦めろ。

686 :名無しさん@ぜろちゃんねる:2006/07/21(金) 02:09:05 ID:???0
レス番がずれてたか。

687 :名無しさん@ぜろちゃんねる:2006/07/21(金) 02:18:54 ID:???0
>>685
はい、おっしゃる通りです…忠告ありがとうございました!1から勉強してきます!

688 :トラックバック ★:2006/07/22(土) 02:32:48 ID:239D0RMk0
【トラックバック来たよ】(ver.0.10)
[タイトル] Welcome to Phentermine-HCL.org
[発ブログ] Welcome to Phentermine-HCL.org
http://www.phentermine-hcl.org/
[=要約=]
<a href="http://www.phentermine-hcl.org">phentermine</a> One type of weight loss that is gaining popularity and giving those who need the

689 :トラックバック ★:2006/07/22(土) 03:48:45 ID:PUBR+zik0
【トラックバック来たよ】(ver.0.10)
[タイトル] xenical
[発ブログ] xenical
http://www.meds-today.com/Xenical.html
[=要約=]
<a href="http://www.meds-today.com/Xenical.html">xenical</a> order viagra cheap drug online <a href="http://store.discountedpills.com/Xenical.html">xenical</a> pharmacy medications phentermine <a href="http://www.weight-drugs.com/phendimetrazine.html">phendimetrazine</a> phentermine drug online doctor

690 :トラックバック ★:2006/07/22(土) 04:00:06 ID:2Fq4qyE20
【トラックバック来たよ】(ver.0.10)
[タイトル] gamlbing
[発ブログ] gamlbing
http://www11.cds.ne.jp/~chino/bbs/chino/bbs.cgi?read=716
[=要約=]
<a href="http://www11.cds.ne.jp/~chino/bbs/chino/bbs.cgi?read=716">gamlbing</a> <a href="http://wrss.org/video_poker">video poker</a> <a href="http://wrss.org/casino">casino</a>

691 :トラックバック ★:2006/07/22(土) 05:18:02 ID:6yVuZpig0
【トラックバック来たよ】(ver.0.10)
[タイトル] poker online
[発ブログ] poker online
http://wrss.org/poker_online
[=要約=]
<a href="http://wrss.org/poker_online">poker online</a> <a href="http://www.bloghof.net/playbest">slots</a> <a href="http://onslo.forumup.org">online slots</a>

692 :トラックバック ★:2006/07/22(土) 07:41:45 ID:TZ/1Y1qo0
【トラックバック来たよ】(ver.0.10)
[タイトル] blackjack
[発ブログ] blackjack
http://www.gambling-day.com/blackjack.html
[=要約=]
<a href="http://www.gambling-day.com/blackjack.html">online blackjack</a> choose the casino bonuses you want before gambling <a href="http://www.best-poker-game.biz/">online poker</a> play casino games <a href="http://online-casino.webpark.pl/poker.html">poker</a> gamble for free with virtual casinos

693 :トラックバック ★:2006/07/22(土) 07:59:47 ID:wGkcZCQY0
【トラックバック来たよ】(ver.0.10)
[タイトル] online slots
[発ブログ] online slots
http://wrss.org/slotsonly
[=要約=]
<a href="http://wrss.org/slotsonly">online slots</a> <a href="http://wrss.org/bingo">bingo</a> <a href="http://wrss.org/slotsonly">slots</a>

694 :トラックバック ★:2006/07/22(土) 11:18:52 ID:wwkzPisI0
【トラックバック来たよ】(ver.0.10)
[タイトル] intenret slots blowjobs
[発ブログ] intenret slots blowjobs
http://mazak.intenret-slots.beztweb.com
[=要約=]
<a href="http://mazak.intenret-slots.beztweb.com">intenret slots blowjobs</a> <a href="http://laving.best-ro6lette.beztweb.com">best ro6lette nimrods</a> <a href="http://fantasmas.vegas-dlot.beztweb.com">vegas dlot 1934</a>

695 :7M. ◆dq7M./4Uw. :2006/07/22(土) 19:10:53 ID:???0
>678
javascript使えばできるんぢゃないでしょーか。

696 :トラックバック ★:2006/07/23(日) 00:56:52 ID:PIzSneZk0
【トラックバック来たよ】(ver.0.10)
[タイトル] The Powerball Jackpot grows to $114 Million!
[発ブログ] The Powerball Jackpot grows to $114 Million!
http://www.casino-focus.com/news/14May2006.html
[=要約=]
<a href="http://www.casino-focus.com/news/14May2006.html">The Powerball Jackpot grows to $114 Million!</a> <a href="http://www.casino-focus.com/news/13Apr2006.html">The Powerball Jackpot was hit in Missouri!</a> <a href="http://www.casino-focus.com/">casino</a>

697 :トラックバック ★:2006/07/23(日) 13:34:49 ID:+lceoh/Y0
【トラックバック来たよ】(ver.0.10)
[タイトル] Where to play
[発ブログ] Where to play
http://www.laserblackjack.com/
[=要約=]
<a href="http://www.laserblackjack.com">blackjack online</a> jack blacks band <a href="http://www.laserblackjack.com/">Where to play</a> black jack firework

698 :名無しさん@ぜろちゃんねる:2006/07/23(日) 16:16:31 ID:???0
>>679
ちょっとやってみた。

read.cgiに以下を追加

sub PrintDiscovery
{
my ($Sys,$Page) = @_;
my ($spath,$lpath,$key,$kh);

$spath = $Sys->{'SYS'}->Get('BBSPATH') . '/' . $Sys->{'SYS'}->Get('BBS');
$lpath = $Sys->{'SYS'}->Get('SERVER') . '/' . $Sys->{'SYS'}->Get('BBS');
$key = $Sys->{'SYS'}->Get('KEY');
$kh = substr($key,0,3);

if (-e "$spath/kako/$kh/$key.html"){ # 過去ログにあり
PrintReadHeadB($Sys,$Page);
$Page->Print("隊長!過去ログ倉庫に<a href=\"$lpath/kako/$kh/$key.html\">");
$Page->Print("$key.html</a><br>を発見しました!<br>");
}
elsif (-e "$spath/pool/$key.cgi"){ # poolにあり
PrintReadHeadB($Sys,$Page);
$Page->Print("$key.datはhtml化を待っています<br>");
$Page->Print('ここは待つしかない・・・<br>');
}
else{ # どこにもない
return 0;
}

$Page->Print("</dl><hr><div align=right>" . $Sys->{'SYS'}->Get('VERSION'));
$Page->Print("</div></body></html>\n");
return 1;
}

↓つづく

699 :名無しさん@ぜろちゃんねる:2006/07/23(日) 16:39:31 ID:???0
↓つづき

sub PrintReadHeadB
{
my ($Sys,$Page) = @_;
my ($Caption,$Banner,$code,$title,$sbcol,$nmcol,$ver,$pathBBS);

require('./module/legolas.pl');
require('./module/denethor.pl');
$Caption = new LEGOLAS;
$Banner = new DENETHOR;

$Caption->Load($Sys->{'SYS'},'META');
$Banner->Load($Sys->{'SYS'});

$code = $Sys->{'CODE'};
$title = 'そんな板orスレッドないです';

# HTMLヘッダの出力
$Page->Print("Content-type: text/html\n\n");
$Page->Print('<html><head><title>' . $title . '</title>');
$Page->Print('<meta http-equiv=Content-Type content="');
$Page->Print('text/html;charset=' . $code . '">');
$Caption->Print($Page,undef);
$Page->Print('</head><!--nobanner-->');

# <body>タグ出力
{
my @work;
$work[0] = $Sys->{'SET'}->Get('BBS_THREAD_COLOR');
$work[1] = $Sys->{'SET'}->Get('BBS_TEXT_COLOR');
$work[2] = $Sys->{'SET'}->Get('BBS_LINK_COLOR');
$work[3] = $Sys->{'SET'}->Get('BBS_ALINK_COLOR');
$work[4] = $Sys->{'SET'}->Get('BBS_VLINK_COLOR');
$Page->Print("<body bgcolor=$work[0] text=$work[1] link=$work[2] ");
$Page->Print("alink=$work[3] vlink=$work[4]>\n");
}
# バナー出力
$Banner->Print($Page,100,2,0);

$sbcol = $Sys->{'SET'}->Get('BBS_SUBJECT_COLOR');
$nmcol = $Sys->{'SET'}->Get('BBS_NAME_COLOR');
$ver = $Sys->{'SYS'}->Get('VERSION');

$pathBBS = $Sys->{'SYS'}->Get('SERVER') . '/' . $Sys->{'SYS'}->Get('BBS');

$Page->Print("<a href=\"$pathBBS/\">■掲示板に戻る■</a><br><br>\n");
$Page->Print("<font color=$sbcol size=+1>そんな板orスレッドないです</font>");
$Page->Print("<br><dl><dt>1 名前:");
$Page->Print("<font color=$nmcol><b>$ver</b></font>");
$Page->Print('投稿日:<br><dd>そんな板orスレッドないです</dd></dt></dl>');
$Page->Print("<br><br><br><hr>\n");

$Page->Print('<br><br>');
}

↓つづく

700 :名無しさん@ぜろちゃんねる:2006/07/23(日) 16:42:47 ID:???0
↓つづき

sub PrintReadSearch 内

my ($Sys,$Page) = @_;

my ($Sys,$Page) = @_;
if (PrintDiscovery($Sys,$Page)){ return; }


/logにも/poolにも無ければ2000000000.datを表示。
既存の部分との重複が多くてちょっと無駄があるけど。

243KB
READ.CGI - 0ch+ BBS 0.7.5 20220323
ぜろちゃんねるプラス