mirror of
https://github.com/NishiOwO/ncsa-httpd.git
synced 2025-04-21 16:54:46 +00:00
89 lines
2.6 KiB
Perl
Executable File
89 lines
2.6 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
#
|
|
# wais.pl -- WAIS search interface
|
|
#
|
|
# wais.pl,v 1.2 1994/04/10 05:33:29 robm Exp
|
|
#
|
|
# Tony Sanders <sanders@bsdi.com>, Nov 1993
|
|
#
|
|
# Example configuration (in local.conf):
|
|
# map topdir wais.pl &do_wais($top, $path, $query, "database", "title")
|
|
#
|
|
|
|
$waisq = "/usr/local/bin/waisq";
|
|
$waisd = "/u/Web/wais-sources";
|
|
$src = "www";
|
|
$title = "NCSA httpd documentation";
|
|
|
|
sub send_index {
|
|
print "Content-type: text/html\n\n";
|
|
|
|
print "<HEAD>\n<TITLE>Index of ", $title, "</TITLE>\n</HEAD>\n";
|
|
print "<BODY>\n<H1>", $title, "</H1>\n";
|
|
|
|
print "This is an index of the information on this server. Please\n";
|
|
print "type a query in the search dialog.\n<P>";
|
|
print "You may use compound searches, such as: <CODE>environment AND cgi</CODE>\n";
|
|
print "<ISINDEX>";
|
|
}
|
|
|
|
sub do_wais {
|
|
# local($top, $path, $query, $src, $title) = @_;
|
|
|
|
do { &'send_index; return; } unless defined @ARGV;
|
|
local(@query) = @ARGV;
|
|
local($pquery) = join(" ", @query);
|
|
|
|
print "Content-type: text/html\n\n";
|
|
|
|
open(WAISQ, "-|") || exec ($waisq, "-c", $waisd,
|
|
"-f", "-", "-S", "$src.src", "-g", @query);
|
|
|
|
print "<HEAD>\n<TITLE>Search of ", $title, "</TITLE>\n</HEAD>\n";
|
|
print "<BODY>\n<H1>", $title, "</H1>\n";
|
|
|
|
print "Index \`$src\' contains the following\n";
|
|
print "items relevant to \`$pquery\':<P>\n";
|
|
print "<DL>\n";
|
|
|
|
local($hits, $score, $headline, $lines, $bytes, $type, $date);
|
|
while (<WAISQ>) {
|
|
/:score\s+(\d+)/ && ($score = $1);
|
|
/:number-of-lines\s+(\d+)/ && ($lines = $1);
|
|
/:number-of-bytes\s+(\d+)/ && ($bytes = $1);
|
|
/:type "(.*)"/ && ($type = $1);
|
|
/:headline "(.*)"/ && ($headline = $1); # XXX
|
|
/:date "(\d+)"/ && ($date = $1, $hits++, &docdone);
|
|
}
|
|
close(WAISQ);
|
|
print "</DL>\n";
|
|
|
|
if ($hits == 0) {
|
|
print "Nothing found.\n";
|
|
}
|
|
print "</BODY>\n";
|
|
}
|
|
|
|
sub docdone {
|
|
if ($headline =~ /Search produced no result/) {
|
|
print "<HR>";
|
|
print $headline, "<P>\n<PRE>";
|
|
# the following was &'safeopen
|
|
open(WAISCAT, "$waisd/$src.cat") || die "$src.cat: $!";
|
|
while (<WAISCAT>) {
|
|
s#(Catalog for database:)\s+.*#$1 <A HREF="/$top/$src.src">$src.src</A>#;
|
|
s#Headline:\s+(.*)#Headline: <A HREF="$1">$1</A>#;
|
|
print;
|
|
}
|
|
close(WAISCAT);
|
|
print "\n</PRE>\n";
|
|
} else {
|
|
print "<DT><A HREF=\"$headline\">$headline</A>\n";
|
|
print "<DD>Score: $score, Lines: $lines, Bytes: $bytes\n";
|
|
}
|
|
$score = $headline = $lines = $bytes = $type = $date = '';
|
|
}
|
|
|
|
open (STDERR,"> /dev/null");
|
|
eval '&do_wais';
|