Namazu-users-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: mknmz-squid 実行時にメディアタイプの取得に失敗し停止
- From: knok@xxxxxxxxxxxxx (NOKUBI Takatsugu)
- Date: Thu, 8 Feb 2001 11:35:45 JST
- X-ml-name: namazu-users-ja
- X-mail-count: 01515
<20010207115334.E259C388D2@xxxxxxxxxxxxxxxx>の記事において
kai13@xxxxxxxxxxxxxxxxxxxxさんは書きました。
>> ● ファイル ●
>> 変更したファイルは以下の場所に置いておきます。
>> http://tat6.ice.ous.ac.jp/akita/filez/squidcache.pl
>> add_magic の都合によりとりこぼしあり。大体うまくいく。
ざっと見てみたのですが、ちょっとよろしくない部分があるように思います。
もっとも、filter が undocumented なままなのがいけないんですが...
基本的に、addFileExts によるファイル種別判断は magic entry がうまく
書けない Microsoft Office suites document 向けにしかたなく用意している
もので、それさえなければ(office suites 用の magic entry が書ければ)な
くしてしまおうと考えてるぐらいです。
とりこぼしがあるようなら、認識に必要な entry を追加すれば良いので、
できればその辺りを調べていただけませんでしょうか? 時間がとれればこちら
でも調べますけど...
>> そして、filterでヘッダを取り除かれたデータのメディアタイプ取得に失敗するのです。
>> これについて、squidcache.pl の filter() でテキストファイル以外はデータの大きさを
>> ゼロにすることで解決しました。
これはあまり正しくない対処で、より良い方法は squid cache data から
header 部分を完全に取り除き、data 部分のみにすることです。
そのような実装に変更するための patch をこのメールの末尾につけておき
ますので、試してみて下さい。
--
野首 貴嗣
E-mail: knok@xxxxxxxxxxxxx (private)
knok@xxxxxxxxxx (Namazu Project)
----
*** squidcache.pl Thu Feb 8 10:41:49 2001
--- squidcache.pl.new Thu Feb 8 11:08:45 2001
***************
*** 28,34 ****
my ($magic) = @_;
#$magic->addMagicEntry('0 string HTTP/1 application/x-squid-cache; x-type=squid-cache');
! $magic->addSpecials("application/x-squid-cache", "^Server:", "^Last-Modified:", "^Connection:", "^Accept-Ranges:", "^ETag:");
$magic->addFileExts('^[0-9A-Z]{8}$' => 'application/x-squid-cache; x-type=squid-cache');
# addFileExtsがうまく動いてくれれば addSpecials は必要ないと思うが。
--- 28,34 ----
my ($magic) = @_;
#$magic->addMagicEntry('0 string HTTP/1 application/x-squid-cache; x-type=squid-cache');
! $magic->addSpecials("application/x-squid-cache; x-type=squid-cache", "^Server:", "^Last-Modified:", "^Connection:", "^Accept-Ranges:", "^ETag:");
$magic->addFileExts('^[0-9A-Z]{8}$' => 'application/x-squid-cache; x-type=squid-cache');
# addFileExtsがうまく動いてくれれば addSpecials は必要ないと思うが。
***************
*** 74,103 ****
my $url = getsquidurl($$contref);
#if ($url =~ /^h/ && $$contref =~ s/^.*(\015\012\015\012|\n\n)//s) {
! if ($url =~ /^h/ && $$contref =~ s/^(.*?)(?:\015\012\015\012|\r?\n\r?\n)//s) {
# Content-Type の抜き出し
my ($header) = $1;
my ($content_type);
if ($header =~ /Content-Type:\s*([\w\/]+)/i) {
$content_type = $1;
}
- if ($content_type !~ /^text/) {
- util::vprint("Processing squid cache file is not text ($content_type, $url)...\n");
- # Content-Type がテキストでないならサイズを0にする。
- $$contref = '';
- $$orig_cfile = '';
- } else {
- util::vprint("Processing squid cache file ($content_type, $url)...\n");
-
- #----- [delete http header] -----
- $$contref =~ s/^<!-- MHonArc v\d+\.\d+\.\d+ -->//;
- }
- }
- else {
- $$contref = '';
}
return undef;
}
1;
--- 74,94 ----
my $url = getsquidurl($$contref);
#if ($url =~ /^h/ && $$contref =~ s/^.*(\015\012\015\012|\n\n)//s) {
! if (defined $url && $url =~ /^h/ && $$contref =~ s/^(.*?)(?:\015\012\015\012|\r?\n\r?\n)//s) {
# Content-Type の抜き出し
my ($header) = $1;
my ($content_type);
if ($header =~ /Content-Type:\s*([\w\/]+)/i) {
$content_type = $1;
}
}
+ desquidcache($contref);
return undef;
}
+ sub desquidcache ($) {
+ my $contref = shift @_;
+ $$contref =~ s/^([^\r\n]+\r\n)+\r\n//s;
+ }
1;