alliance/dev/cvslargo/www/cgi-bin/czo/search.cgi

214 lines
5.9 KiB
Perl
Executable File

#!/usr/local/bin/perl
# (C) Copyright 1997,98 Czo <mailto:Olivier.Sirol@asim.lip6.fr>
# Parts (C) A.Fenyo
BEGIN {
# Use the CGI::Carp module and import the carpout() function.
#
use CGI::Carp qw(carpout);
# Send warnings and die messages to the browser.
#
carpout(STDOUT);
}
use CGI;
use POSIX;
# SCRIPT_NAME = /cgi-bin/test.cgi
# SCRIPT_FILENAME = /users/largo2/webmastr/wwwroot/cgi-bin/printenv.cgi
$ASIM_HEADER=`/bin/cat /users/largo2/webmastr/wwwroot/slash/ssi/asim_header.html`;
$ASIM_FOOTER=`/bin/cat /users/largo2/webmastr/wwwroot/slash/ssi/asim_footer.html`;
$SEARCH_HEADER=`/bin/cat /users/largo2/webmastr/wwwroot/slash/ssi/search_header.html`;
$SEARCH_MIDDLE=`/bin/cat /users/largo2/webmastr/wwwroot/slash/ssi/search_middle.html`;
$SEARCH_FOOTER=`/bin/cat /users/largo2/webmastr/wwwroot/slash/ssi/search_footer.html`;
$lock = "/tmp/search.lock";
$log = "/users/largo2/webmastr/wwwroot/slash/cgi-bin/private/search.log";
print "Content-type: text/html\n\n";
#unlink("$lock");
$query = new CGI;
$str = $query->param('searchstring');
# Czo 990607 : autorise . et _
$str =~ s/[^a-zA-Z0-9-_ \*\.]//g;
$str =~ s/ -/ /g;
$str =~ s/^-/ /;
$grepstr=$str;
$grepstr =~ tr/A-Z/a-z/;
@words = split / +/, $grepstr;
foreach $word (@words) {
$word =~ s/ *//;
next if (!$word);
next if (($word eq 'or') || ($word eq 'and'));
@allwords = (@allwords, $word);
};
$scope = $query->param('ComboSearchList');
if ( $scope eq "Alliance Mailling Lists" ) {
$scopefile = "/users/largo2/webmastr/wwwroot/slash/cgi-bin/alml.dat";
} elsif ( $scope eq "Alliance" ) {
$scopefile = "/users/largo2/webmastr/wwwroot/slash/cgi-bin/alliance.dat";
} elsif ( $scope eq "Education" ) {
$scopefile = "/users/largo2/webmastr/wwwroot/slash/cgi-bin/education.dat";
} elsif ( $scope eq "Mpc" ) {
$scopefile = "/users/largo2/webmastr/wwwroot/slash/cgi-bin/mpc.dat";
} elsif ( $scope eq "Multimedia" ) {
$scopefile = "/users/largo2/webmastr/wwwroot/slash/cgi-bin/multimedia.dat";
} elsif ( $scope eq "Publications" ) {
$scopefile = "/users/largo2/webmastr/wwwroot/slash/cgi-bin/publications.dat";
} elsif ( $scope eq "Personal pages" ) {
$scopefile = "/users/largo2/webmastr/wwwroot/slash/cgi-bin/users.dat";
} else { $scopefile = "/users/largo2/webmastr/wwwroot/slash/cgi-bin/allsite.dat";
}
if (-e $lock) {
print "$ASIM_HEADER\n$SEARCH_HEADER\n";
print '<INPUT NAME=searchstring size=40 maxlength=800 name="searchstring" value="'.$str.'" > ';
print "$SEARCH_MIDDLE\n";
print '<font face="verdana,arial,helvetica" size=2><b>Sorry</b>, server was busy, please try again.</font>';
print "<SCRIPT>Server is busy, please try again.</SCRIPT>\n";
print "$SEARCH_FOOTER\n$ASIM_FOOTER\n";
}
else {
print "$ASIM_HEADER\n$SEARCH_HEADER\n";
print '<INPUT NAME=searchstring size=40 maxlength=800 name="searchstring" value="'.$str.'" > ';
print "$SEARCH_MIDDLE\n";
#system (date);
#print system ( "/usr/local/home/czo/local/FreeBSD/bin/swish-e -f /usr/local/home/czo/public_html/cgi-bin/index.swish-e -w $str" );
#$RET = `/usr/local/home/czo/local/FreeBSD/bin/swish-e -c /usr/local/home/czo/public_html/cgi-bin/index.swish-e -w $str`;
#print "<PRE>";
open RESULT, "/usr/local/bin/swish-e -m 40 -f $scopefile -w $str |";
$cpt = 0;
while (<RESULT>) {
# chop;
#print ;
m/err: no results/ && do
{
$nmatch=0;
print '<font face="verdana,arial,helvetica" size=2><b>No</b> match found in "'.$scope.'". </font>';
print '<font face="verdana,arial,helvetica" size=-1>';
};
m/^# Number of hits: (.*)/ && do
{
$nmatch=$1;
print '<font face="verdana,arial,helvetica" size=-1><b>'.$1.'</b> matches were found in "'.$scope.'". </font>';
print '<font face="verdana,arial,helvetica" size=-1>';
};
m/^#/ && next;
m/^(.*) (.*) "(.*)" (.*)/ && (($res1, $res2, $res3, $res4) = ($1, $2, $3, $4)) && do
{
$cpt++;
$tmp1 = $res1/10; $tmp1 =~ s/^(.*)\..*/\1/;
$tmp = $res4/1024; $tmp =~ s/^(.*\..).*/\1/;
print '<P><b>'.$cpt.'. </b><font color="#0000FF"> ['.$tmp1.'%] </font> <a href="'.$res2.'"><b>'.$res3.'</b></a><br>
<font face="arial,helvetica" size=-2>[<b>URL:</b> '.$res2.']</font><br>
<font face="verdana,arial,helvetica" size=-2>Page size '.$tmp.' Kb</font><P>' ;
#Last modified 7-Oct-97 -
# $file=$res2;
# $file =~ s%http://www-asim.lip6.fr/%/users/largo2/webmastr/wwwroot/%;
#
# # print "<P>$file\n<P>";
#
# #$FILE = `/asim/gnu/bin/lynxx -dump -reload -nolist $file`;
# $FILE = `cat $file`;
#
# $FILE =~ s/<BR>/ - /sg;
# $FILE =~ s/<HR>/ - /sg;
# $FILE =~ s/<LI>/ - /sg;
# $FILE =~ s/<DT>/ - /sg;
# $FILE =~ s/<DD>/ - /sg;
# $FILE =~ s/<P>/ - /sg;
# $FILE =~ s/-( -)*/-/sg;
#
# $FILE =~ s/<.*?>/ /sg;
#
# foreach $word (@allwords) {
# $FILEinsensitive = $FILE;
# $FILEinsensitive =~ tr/A-Z/a-z/;
# $wordinsensitive = $word;
# $wordinsensitive =~ tr/A-Z/a-z/;
# $fileindex = index $FILEinsensitive, $wordinsensitive;
# next if ($fileindex == -1);
#
# $fileindex = 160 if ($fileindex < 160);
# $grep = substr $FILE, $fileindex - 160, 320;
# $grep =~ s/^[^ ]* //s;
# $grep =~ s/ [^ ]*$//s;
#
# foreach $w (@allwords) {
# $grep =~ s%($w)%<B>\1</B>%si;
# };
#
# print "<SMALL>... $grep ...</SMALL><P>\n";
#
# last;
# };
#
#
#
#
};
} ;
close(RESULT);
#print "$scopefile\n";
print "$SEARCH_FOOTER\n$ASIM_FOOTER\n";
# REMOTE_ADDR = 132.227.103.10
# HTTP_X_FORWARDED_FOR = 132.227.103.10
$CLIENT = $ENV{"HTTP_X_FORWARDED_FOR"};
if ( $CLIENT eq "" ) {
$CLIENT = $ENV{"REMOTE_ADDR"};
}
$TIME=strftime("%Y/%m/%d %H:%M:%S",localtime());
open(LOCK,">$lock") || warn "Can't open lock : $!";
close (LOCK);
open(SORTIE, ">>$log") || die "Can't open log : $!";
print SORTIE "$TIME $CLIENT \"$scope\" \"$str\" $nmatch\n";;
close (SORTIE);
unlink("$lock") || warn "Can't delete lock : $!";
}
exit 0
__END__