namazu-ml(ring)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
mknmz for squid cache file
- From: MIYOSHI Tsutomu <mijosxi@xxxxxxxxxxxxxxxxxxx>
- Date: Wed, 1 Dec 1999 19:20:25 +0900
初めまして。
たった今登録させていただいた三好 力と申します。
namazu1.3.0.10でsquidがcacheしたファイルを検索できるように
mknmzを変更しました。
cacheのファイル名は16進数で、ファイルの中の
ヘッダ部分にcache元のURLが書いてあったので、
それを取り出してNMZ.*を作るようにしてあります。
詳しいことは
http://mylab.ike.tottori-u.ac.jp/~mijosxi/1999/12_sqnmz.html
に書きましたので、お暇なときにでも見ていただけると幸いです。
また、コメントなど頂けるとうれしいです。
よろしくお願いします。
三好 力
http://mylab.ike.tottori-u.ac.jp/~mijosxi/
以下に
% diff /usr/local/bin/mknmz mknmz
の結果を添付します。
______
53a54
> -s: squid のファイルを処理する
92a94
> -s: treat squid files
375a378
> my $SquidOpt = 0;
462a466
> $ctrl = $ctrl - 28 if $SquidOpt; # about 28 ctrl in header of cache file
681a686,741
>
> # get url form squid file
> # 1999-11-30 mijosxi@xxxxxxxxxxxxxxxxxxx
> sub get_squrl ($) {
> my ($orig_cfile) = @_;
> my ($i, $c, $squrl);
> my $cfile = $$orig_cfile;
>
> return ("") unless (-f $cfile && -r $cfile);
> $i = -s $cfile;
> return ("") if $i > $FILE_SIZE_LIMIT;
>
> # for handling a file which contains Shift_JIS code
> my $shelter_cfile = "";
> my $shelter_ext = "";
> if ($SYSTEM eq "MSWin32"
> && $cfile =~ /[\x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc]|[\x20\xa1-\xdf]/)
> {
> $shelter_cfile = $cfile;
> $cfile = $TMP_W;
> while ($shelter_cfile =~ /^.*\.($HELPER_EXTENSIONS)$/o) {
> $shelter_ext = $1;
> $cfile .= '.'.$shelter_ext;
> last;
> }
> use File::Copy;
> copy("$shelter_cfile","$cfile");
> }
>
> open(CFILE, $cfile) || die "$cfile: $!\n";
>
> # get url allowed to squid cache file format
> # 60 byte skip, url end with '\x00"
> for($i = 0; $i < 60; $i++) {
> $c = getc CFILE;
> }
> $c = getc CFILE;
> # 'h' means first char of url "http...", for skipping non squid file
> return("") if $c !~ 'h';
> $squrl = "";
> for($i = 0; ($i < 512) && ($c !~ '\x00'); $i++) {
> $squrl = join("", $squrl, $c);
> $c = getc CFILE;
> }
>
> # for handling a file which contains Shift_JIS code
> if ($SYSTEM eq "MSWin32" && $shelter_cfile ne "") {
> unlink "$cfile.$shelter_ext";
> $cfile = $shelter_cfile;
> }
>
> close(CFILE);
> ($squrl);
> }
>
>
1411a1472,1475
> if ($ARGV[0] =~ /s/) {
> $SquidOpt = 1;
> $TARGET_FILE = join("", $TARGET_FILE, '|.*\/');
> }
1766,1768c1830,1842
< push(@FList, $name) if
< ( (! /^(($DENY_FILE)(\.gz|\.Z)?)$/i) &&
< /^(($TARGET_FILE)(\.gz|\.Z|\?.*)?)$/i && -f $_ && -r $_);
---
> if ($SquidOpt) {
> my $squrl = get_squrl(\$name);
> if (($squrl !~ /^(($DENY_FILE)(\.gz|\.Z)?)$/i) &&
> ($squrl =~ /^(($TARGET_FILE)(\.gz|\.Z|\?.*)?)$/i) &&
> -f $name &&
> -r $name) {
> push(@FList, $name);
> }
> } else {
> push(@FList, $name) if
> ( (! /^(($DENY_FILE)(\.gz|\.Z)?)$/i) &&
> /^(($TARGET_FILE)(\.gz|\.Z|\?.*)?)$/i && -f $_ && -r $_);
> }
2218c2292,2297
< print FLIST "<DT>\n<STRONG><A HREF=\"$url\">$title</A></STRONG>\n";
---
> if ($SquidOpt) {
> my $squrl = get_squrl(\$cfile);
> print FLIST "<DT>\n<STRONG><A HREF=\"$squrl\">$title</A></STRONG>\n";
> } else {
> print FLIST "<DT>\n<STRONG><A HREF=\"$url\">$title</A></STRONG>\n";
> }
2920a3000,3004
>
> if ($SquidOpt) {
> $cfile = get_squrl(\$cfile);
> $cfile = join("", $cfile, $DEFAULT_FILE) if $cfile =~ /\/$/;
> }
______