■掲示板に戻る■ 全部 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やら
おみくじやら何やらの機能を付けたりして改造するスレです。


557 :名無しさん@ぜろちゃんねる:2005/08/27(土) 11:53:08 ID:???0
Beってなに?

558 :名無しさん@ぜろちゃんねる:2005/08/27(土) 22:06:21 ID:98VMv66+0
http://be.2ch.net/
be2chのことじゃね?

559 :7M. ◆dq7M./4Uw. :2005/08/28(日) 12:44:23 ID:???0
beのどの機能を追加したいんだろう。。。
ログインしないと書き込めないようにするヤツなら昔作ったのの流用でいけるかも。
だけど今PCあぼーんでPerlが動かない悲劇。

560 :名無しさん@ぜろちゃんねる:2005/08/28(日) 15:13:07 ID:KqKj1vOA0
>>559
pcあぼーん(´Д`)…。大変そうだな…。
ログインしないと書き込めない掲示板のスクリプツホスィ( ゚Д゚)…。

561 :名無しさん@ぜろちゃんねる:2005/08/28(日) 15:18:00 ID:???0
beのどんな機能ってポイント(?##)とかログインしないと書き込めn(ry
とかの機能だと、、思う。たぶん

562 :7M. ◆dq7M./4Uw. :2005/08/28(日) 19:40:36 ID:???0
beのログイン機能はですね。
クッキーにパスワードとかを吐かせておくんです。
んで、bbs.cgi自体はクッキーを調べ、
見つからなかったらエラーを出す。
一応昔作ったクッキーにパス吐き出すスクリプトだけ置いときます、
後0chスクリプトの改造は誰か他の人に任せちゃえ。。。
あるいは私のPCが復活するのが先か。
ttp://newsplus.jp/~lab/cgi-bin/resist.txt

563 :名無しさん@ぜろちゃんねる:2005/08/29(月) 14:20:03 ID:mQK6BAu+0
auのサブスクライバIDを取得するようにgaladriel.plを改造してみたんですが大丈夫そうですか?
au,docomo,PCで確認しましたがエラーなしでした。でも知識がないので心配です。

# エージェントモード取得 - GetAgentMode
sub GetAgentMode
{
my $this = shift;
my ($UA) = @_;

$_ = $UA;
if (m/DoCoMo/){ return 1; } # docomo携帯
if (m/J-PHONE/){ return 2; } # J-Phone携帯
if (m/KDDI/){ return 3; } # au携帯
if (m/DDIPOCKET/){ return 4; } # エアエッジホン

return 0;
}

564 :名無しさん@ぜろちゃんねる:2005/08/29(月) 14:21:10 ID:mQK6BAu+0
# リモートホスト(IP)取得関数 - GetRemoteHost
sub GetRemoteHost
{
my $this = shift;
my ($HOST,$HOST2);
if(m/KDDI/){
$HOST = $ENV{'HTTP_X_UP_SUBNO'};
$HOST2 = "";

$HOST2 = gethostbyaddr(pack('c4', split(/\./, $HOST2)), 2);
$HOST .= "<$HOST2>" if ($HOST2);

return $HOST;
}else{

565 :名無しさん@ぜろちゃんねる:2005/08/29(月) 14:22:11 ID:mQK6BAu+0
$HOST = $ENV{'REMOTE_ADDR'};
$HOST2 = "";

if ($HOST =~ /\d$/) {
$HOST = gethostbyaddr(pack('c4',split(/\./, $HOST)), 2) || $HOST;
}
if ($ENV{'HTTP_VIA'} =~ s/.*\s(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/) {
$HOST2 = $ENV{'HTTP_VIA'};
}
if ($ENV{'HTTP_X_FORWARDED_FOR'} =~ s/^(\d+)\.(\d+)\.(\d+)\.(\d+)(\D*).*/$1.$2.$3.$4/){
$HOST2 = $ENV{'HTTP_X_FORWARDED_FOR'};
}
if ($ENV{'HTTP_FORWARDED'} =~ s/.*\s(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/) {
$HOST2 = $ENV{'HTTP_FORWARDED'};
}
$HOST2 = gethostbyaddr(pack('c4', split(/\./, $HOST2)), 2);
$HOST .= "<$HOST2>" if ($HOST2);

return $HOST;
}
}

566 :名無しさん@ぜろちゃんねる:2005/08/30(火) 15:30:11 ID:JS1HSwls0
名前のところが空欄の人をNGにしたいのですがどうやったらできますか?
空欄というのは名無しのことじゃなくてスペース「 」を名前にしていることです。

567 :名無しさん@ぜろちゃんねる:2005/08/31(水) 07:02:16 ID:???0
>>566
NGな名前登録できなかったっけ?>0ch

568 :名無しさん@ぜろちゃんねる:2005/08/31(水) 12:24:28 ID:XxuCC9io0
名前の欄と本文の欄のNGワードって分離されてましたっけ?

569 :◆hikArinCL2 :2005/09/10(土) 23:27:33 ID:???0
NGワードは欄ごとに分離されていません。一括処理です
NGワード関連は030614は本文のみをチェック、
それ以降のバージョンは名前、メール欄、本文をチェックします


570 :名無しさん@ぜろちゃんねる:2005/10/15(土) 22:47:06 ID:yplNHM860
何度か流されてるけど、昔あったrawmode実装できない?
http://gedoh.org/aki/2ch/current/bbs/rawmode.txt

571 :名無しさん@ぜろちゃんねる:2005/11/08(火) 00:46:58 ID:3WOTeOxc0
051008の携帯のメール欄表示の方法を教えて下さい。

572 :名無しさん@ぜろちゃんねる:2005/11/08(火) 07:29:51 ID:3WOTeOxc0
051008の連投解除方法も。

結構設定変わってて分からないです。

573 :名無しさん@ぜろちゃんねる:2005/11/10(木) 00:19:58 ID:???0
>>572
自分も知りたいです。

574 :◆hikArinCL2 :2005/11/10(木) 00:44:33 ID:???0
*「連続投稿規制解除」を有効にしたグループに所属するキャップを使用する
*連続書き込み回数が書き込みログ保存数を上回るように設定する
*vara.plの385-389行目をコメントアウトしてなかったことにする

575 :571・572:2005/11/12(土) 13:45:37 ID:r7ofHhXw0
>573
お互い頑張ろうな。

>574
有難う。
3番目を実行してみました。

576 :名無しさん@ぜろちゃんねる:2005/11/14(月) 01:36:01 ID:G5UE27io0
ちとテスト

577 :2ちゃんねるX ◆2ch..Ybe0Q :2005/11/14(月) 01:43:09 ID:G5UE27io0
管理人さんへ

0chの開発お疲れ様です。
この度、「2ちゃんねるX」が製作、利用しております、
2ch同仕様「Samba24」のプレゼンに参りました。

http://sys.2chx.net/_samba24/use_out.html
上記URLに詳細があります(PHPでの使用法ですが)
私はPerlはわからないので、改造お願いします。

CGIにて、「http://sys.2chx.net/_samba24/samba24.php?host=$host&limit=$limit」にアクセスしていただけましたら、
"$host"からのシステムへのアクセスに対し、"$limit"秒間だけ、警告(2chと同じデザインの。)を返します。
"$host"が違うかったり、"$limit"秒を過ぎると、警告を返しません(返答なし)。

よろしくお願いいたします。
(2chx「Samba24」の動作テストは、 http://qb5.2chx.net/test/read.cgi/operate/1006103754/l50 でどうぞ。)

578 :名無しさん@ぜろちゃんねる:2005/11/14(月) 03:26:31 ID:???0
なんつーかいちいち外部サーバーへ問い合わせってのがウザい。
多分、
1. 書き込み時にログファイルへIPと時間を記録
2. 次書き込み時にログファイルをチェック→時間内だったらアウト
って感じでimg0chでも実装してあると思うけど。

つーかいろいろ荒らしまくってるそーじゃないですかぁ。
ということで、宣 伝 乙 !

579 :名無しさん@ぜろちゃんねる:2005/11/14(月) 03:28:52 ID:???0
荒らし→宣伝ね

580 ::2005/11/23(水) 04:03:42 ID:v3QO6i9c0


581 :名無しさん@ぜろちゃんねる:2005/12/08(木) 22:37:39 ID:???0
test051113ver使わせてもらっています。
NGワードの編集では、どんなNGワードでも同一文字列に置換されてしまいますが
これを文字列によって別々に置換することは出来ないでしょうか?
例えば「死ね」だったら「生きろ」、「( ^ω^)」だったら「( ´∀`)」みたいに。
管理画面からでもプラグイン等で編集でもどちらでもいいのでよろしくお願いします。

582 :◆hikArinCL2 :2005/12/09(金) 00:50:22 ID:???0
管理画面からの個別置換は不可能ですがプラグインならソースを
編集することによって可能になります
@tag変数をカンマの左にNGワード、カンマの右に置換文字列を入れて
変更することで文字列を好きなように置換できますが多すぎると
遅くなるので注意です
↓こんな感じ
package ZERO_PLUGIN;
use strict;
sub new { bless {}, $_[0] }
sub getName { 'NGワード置換機能\' }
sub getExplanation { 'NGワードを特定の文字列を置換する(複数指定可)' }
sub getType { 1 | 2 }
sub execute {
$_[2]->Set('FROM',_replace($_[2]->Get('FROM')));
$_[2]->Set('mail',_replace($_[2]->Get('mail')));
$_[2]->Set('MESSAGE',_replace($_[2]->Get('MESSAGE')));
$_[2]->Set('subject',_replace($_[2]->Get('subject')));
}
sub _replace {
my $src = shift;
my @tag = ('死ね,生きろ','( ^ω^),( ´∀`)');
foreach my $one (@tag){
my($key,$var) = split(/,/,$one);
$key = qr($key);
$src =~ s/$key/$var/g;
}
return $src;
}
1;

583 :◆hikArinCL2 :2005/12/09(金) 00:54:37 ID:???0
注意
「表示」といった文字列を入れると置換されないので
特に正規表現を使わないのであれば
$key = qr($key);

$key = qr(\Q$key\E);
に変更すれば「表示」でも置換可能になります

584 :名無しさん@ぜろちゃんねる:2005/12/09(金) 22:39:02 ID:???0
>>582-583
◆hikArinCL2さんどうもありがとうございました。
報告遅くなってどうもすいません、ただ今動作確認したところ完璧に動きました。
NGワード置換は5つくらいまでで済む予定なので大丈夫だと思います。

585 :名無しさん@ぜろちゃんねる:2005/12/19(月) 21:03:59 ID:PP7Q2mS60
>574
具体的にどうやるんですか?

コメントアウトしただけじゃ連投規制を解除出来ないんですが。

586 :◆hikArinCL2 :2005/12/19(月) 21:51:12 ID:???0
>>585
バージョンによるけど>>574は051008の話だから
現在の最新版である051113の場合は423-427行目をコメントアウト
なのでなるべくならソースをいじらなくてすむ上記2つのいずれかを
行うようにしましょう

ちなみに>>574を051113に適用するとスレッド新規作成時にキーが
同じスレッドが上書きされる問題が発生するのでやらないように

587 :名無しさん@ぜろちゃんねる:2005/12/21(水) 03:18:19 ID:???0
>>hikarin
mod_0chがDLできなくなってる?

588 :◆hikArinCL2 :2005/12/21(水) 22:12:27 ID:???0
ダウンロードページのmod_0chの上のリンク(DL)が切れていたので修正しました


589 :厨房 ◆/GgRTOxpqo :2005/12/22(木) 15:15:59 ID:T6DC8XUY0
どうも初めまして
あの質問なんですが私が使ってるスクリプトは一番最近の
051113なんですが・・IDを???にするにはどうすれば言いのでしょうか
教えてください・・よろしくお願いいたします

590 :ゆらいざ:2005/12/22(木) 16:28:36 ID:???0
0chスクリプト英語版がほしかとです…

7割方英訳したところで力尽きました
休憩したら再開するツモリではありますが…
誰かindexのテンプレが格納されてるトコ知らないですかー?

591 :名無しさん@ぜろちゃんねる:2005/12/23(金) 02:39:03 ID:tQQNqZHQ0
051113に対応している
RSS出すアシストって
ないですか?

592 :◆hikArinCL2 :2005/12/23(金) 23:53:45 ID:???0
>>589
「掲示板設定」 -> 「制限設定」 -> 「ID表示」
で「任意ID」に設定し、メール欄に何か書けばIDが???になります
キャップを作成し、それを使うことで???にすることも可能
>>590
indexのテンプレが何なのかがよく分からない問題が
>>591
ありません。自分で作るしかない

593 :厨房 ◇/GgRTOxpqo :2005/12/24(土) 23:34:24 ID:YP0LDc3o0
ありがとうございます・・
無事出来ました・・_(._.)_>>592



594 :nukeanasan:2005/12/30(金) 21:40:46 ID:TZZup2jI0
a

595 :名無しさん@ぜろちゃんねる:2006/01/03(火) 08:57:55 ID:QQSuLxuA0
明けましておめでとうございます。

携帯で新着レスを上に持ってくるように、
上下逆にするにはどうしたら良いですか?

596 :名無しさん@ぜろちゃんねる:2006/01/04(水) 09:20:35 ID:51de9MVc0
Tableタグ(?)そのものを変えるのはどうのようにしたら良いのでしょうか?

597 :名無しさん@ぜろちゃんねる:2006/01/04(水) 11:18:45 ID:???0
>>595
たぶんr.cgiの248行目を変える

>>596
tableタグそのものを変更すればいい

598 :名無しさん@ぜろちゃんねる:2006/01/07(土) 02:00:59 ID:???0
test041030で>>430を使わせてもらってます。
キャップのみBBQから解放されることは可能でしょうか?
よろしくお願いします。

599 :名無しさん@ぜろちゃんねる:2006/01/08(日) 23:26:40 ID:???0
>>598
改造すれば可能。

600 :598:2006/01/09(月) 00:39:13 ID:???0
>>599
ありがとうございます。改造の仕方教えていただけないでしょうか?
どうかよろしくお願いします。

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に渡して、そのスレッドに
関係ある商品を表示する 
みたいなことだと、呼び出し側をかなり改造しないとですよね。

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