#! /usr/local/bin/perl ############################################## #BooFilesSearch v1.04 / this program is free.# #(C) BooBooClub 2001-2007 # ############################################## #set data $sdir = '../'; $surl = '../'; $found = 'found.html'; $head = '

検索結果

'; $view = 'fname'; $sepa = ' '; $log = 'off'; $logfile = './log.dat'; $logmax = '200'; #read lib_etc; require './jcode.pl'; $| = 1; #read if ($ENV{'REQUEST_METHOD'} eq "POST"){ read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else{ $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/\cM\n//g; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/\r\n|[\r\n]/$sepa/ig; if($log eq 'on'){ $svalue = $value; &jcode'convert(*svalue,'sjis'); $SFORM{$name} = $svalue; } &jcode'convert(*value,'euc'); $FORM{$name} = $value; } #log if($log eq 'on'){ $wrt = $SFORM{'sw'}."\n"; open (LOG,"$logfile"); @logdata = ; close (LOG); push(@logdata,$wrt); $logcnt = @logdata; if($logcnt > $logmax){ @newlog = @logdata[($logcnt-$logmax)..$#logdata]; } else{ @newlog = @logdata; } open (LOG,">$logfile"); print LOG @newlog; close (LOG); } #search @dsw = split(/\Q$sepa\E/,$FORM{'sw'}); foreach $dsw(@dsw){ $dsw =~ s/^\s//; $dsw =~ s/\s$//; push (@sw,$dsw); } unless($surl =~ /\/$/){ $surl = "$surl".'/'; } open (FHTML,"$found"); @fhtml = ; close (FHTML); print "Content-type: text/html\n\n"; foreach $fhtml(@fhtml){ if($fhtml =~ //){ print "$`"; print "
\n"; &jcode'convert(*head,'sjis'); print "$head"."\n"; $w = $FORM{'sw'}; &jcode'convert(*w,'sjis'); print '(文字列"'."$w".'"をファイル名に含むファイルの検索)
'."\n"; print "

\n"; chdir $sdir; $cp = 0; &sdir('.'); print "
\n"; print "
\n"; print "$'"; } else{ &jcode'convert(*fhtml,'sjis'); print "$fhtml"; } } sub sdir{ local($dir,$nlink) = @_; local($dev,$ino,$mode,$subcount); unless($nlink){ ($dev,$ino,$mode,$nlink) = stat('.'); } opendir(DIR,'.'); local(@files) = readdir(DIR); closedir(DIR); if($nlink == 2){ foreach $file(@files){ if($file eq '.' || $file eq '..'){ next; } &act; } } else{ $subcount = $nlink - 2; foreach $file(@files){ if($file eq '.' || $file eq '..'){ next; } &act; if($subcount == 0){ next; } ($dev,$ino,$mode,$nlink) = lstat($file); unless(-d $file){ next; } chdir $file; &sdir($name,$nlink); chdir '..'; $subcount--; } } } sub act{ $name = "$dir/$file"; @path = split(/\//,$name); $sfile = $path[-1]; $sname = $stype = ''; ($sname,@stype) = split(/\./,$sfile); $stype = join('.',@stype); &jcode'convert(*sfile,'euc'); &jcode'convert(*sname,'euc'); &jcode'convert(*stype,'euc'); $hw = @sw; $hit = 0; if($hw == 1){ if(!$FORM{'d'}){ if($FORM{'n'} eq 'x' && $sfile =~ /$FORM{'sw'}/i){ $hit = 1; } elsif($FORM{'n'} eq 'h' && $sname =~ /^$FORM{'sw'}/i){ $hit = 1; } elsif($FORM{'n'} eq 'b' && $sname =~ /$FORM{'sw'}$/i){ $hit = 1; } elsif($FORM{'n'} eq 'f' && $sname =~ /^$FORM{'sw'}$/i){ $hit = 1; } elsif($FORM{'n'} eq 'a' && $sfile =~ /^$FORM{'sw'}$/i){ $hit = 1; } } else{ if($FORM{'n'} eq 'x' && $sfile =~ /$FORM{'sw'}/){ $hit = 1; } elsif($FORM{'n'} eq 'h' && $sname =~ /^$FORM{'sw'}/){ $hit = 1; } elsif($FORM{'n'} eq 'b' && $sname =~ /$FORM{'sw'}$/){ $hit = 1; } elsif($FORM{'n'} eq 'f' && $sname =~ /^$FORM{'sw'}$/){ $hit = 1; } elsif($FORM{'n'} eq 'a' && $sfile =~ /^$FORM{'sw'}$/){ $hit = 1; } } if($hit == 1){ @fname = split(/\//,$name); $fname = $fname[$#fname]; $url = $name; $url =~ s/\.\///; $lurl = "$surl"."$url"; if($view eq 'fname'){ $vtxt = $fname; } else{ $vtxt = "$surl"."$url"; } &jcode'convert(*vtxt,'sjis'); if(-f $file){ print ''."$vtxt".''."
\n"; } $cp++; } } else{ $cs = 0; $hit = 0; foreach $sw(@sw){ if(!$FORM{'d'}){ if($FORM{'n'} eq 'x' && $sfile =~ /$sw/i){ $hit = 1; } elsif($FORM{'n'} eq 'h' && $sname =~ /^$sw/i){ $hit = 1; } elsif($FORM{'n'} eq 'b' && $sname =~ /$sw$/i){ $hit = 1; } elsif($FORM{'n'} eq 'f' && $sname =~ /^$sw$/i){ $hit = 1; } elsif($FORM{'n'} eq 'a' && $sfile =~ /^$sw$/i){ $hit = 1; } } else{ if($FORM{'n'} eq 'x' && $sfile =~ /$sw/){ $hit = 1; } elsif($FORM{'n'} eq 'h' && $sname =~ /^$sw/){ $hit = 1; } elsif($FORM{'n'} eq 'b' && $sname =~ /$sw$/){ $hit = 1; } elsif($FORM{'n'} eq 'f' && $sname =~ /^$sw$/){ $hit = 1; } elsif($FORM{'n'} eq 'a' && $sfile =~ /^$sw$/){ $hit = 1; } } if($hit == 1){ $cs++; $hit = 0; } } if(($FORM{'t'} eq 'a' && $hw == $cs) || ($FORM{'t'} eq 'o' && $cs != 0)){ @fname = split(/\//,$name); $fname = $fname[$#fname]; $url = $name; $url =~ s/\.\///; $lurl = "$surl"."$url"; if($view eq 'fname'){ $vtxt = $fname; } else{ $vtxt = "$surl"."$url"; } &jcode'convert(*vtxt,'sjis'); if(-f $file){ print ''."$vtxt".''."
\n"; } $cp++; } } } if($cp == 0){ print '
当該文字を含むファイルはありませんでした。
'; } exit 0;