#!/usr/bin/perl
# (c) Fluffy Clouds Ltd
# http://www.fluffy.co.uk/
# author: Ben Summers
# Fluffy Search Home page at http://www.fluffy.co.uk/fs/
# email: fluffysearch@fluffy.co.uk
# Launch your web graphics... fast! http://www.ignite-it.co.uk/
#use CGI::Carp qw(Fatals_To_Browser);
require 'fluffysearch.config';
&parse_form;
print "Content-Type: text/html\n\n";
if(!open(FL, $page_model))
{print "Couldn't open page model\n"; exit(1);}
read FL,$model,-s $page_model;
close FL;
($model_top, $model_bot) = split /#####/, $model;
$extra = '';
$title = '';
@words = ();
if(exists $form{'words'})
{ $search_words = $form{'words'};
if($form{'wt'} eq 'be') {$search_wb = ' checked'; $search_ew = '';}
else {$search_wb = ''; $search_ew = ' checked';}
if($form{'bl'} eq 'an') {$search_bAND = ' checked'; $search_bOR = ''; $search_bPHR = '';}
elsif($form{'bl'} eq 'ph') {$search_bAND = ''; $search_bOR = ''; $search_bPHR = ' checked';}
else {$search_bAND = ''; $search_bOR = ' checked'; $search_bPHR = '';}
$wl = lc $search_words;
$wl =~ tr/a-z0-9/ /c;
$wl =~ s/(\A\s+)|(\s+\Z)//g;
@words = split /\s+/, $wl;
if($wl eq '' || $#words < 0)
{ $extra = "Please enter some words in the search box.
";
@words = ();
} else
{ $title = join ' ', 'Search results for', @words;
} $search_q = $ENV{'QUERY_STRING'};
$search_q =~ s/\&pg=\d+//;
} else
{ $search_words = '';
$search_wb = ' checked';
$search_ew = '';
$search_bAND = '';
$search_bOR = ' checked';
$search_bPHR = '';
} if($title ne '') {$model_top =~ s~
\n"; $n = $page_begin + 1; for $pg (@pages) { if($pg =~ m/(\w)(.+)/) { if($1 eq 'I') { $fn = $2; if(open FL, "$docroot_disc/$fn") { read FL,$pt,1024; close FL; if($pt =~ m~
\n"; } else { print "No matching pages found.
\n"; } if($res_per_page != -1) { if($found != $shown) { $pages = int(($found / $res_per_page) + 1); print "$pages pages : \n"; if($this_page != 0) { $p = $this_page - 1; print qq~< ~; } else { print "< "; } for($p = 0; $p < $pages; $p++) { $n = $p+1; if($p == $this_page) { print " $n "; } else { print qq~ $n ~; } } if($this_page != ($pages - 1)) { $p = $this_page + 1; print qq~ >
\n~; } else { print " >
\n"; } } else { print "1 page of results only
\n"; } } } print <<__EOF;
Search by Fluffy Clouds __EOF print $model_bot; exit(0); sub parse_form { %form = (); my $buffer; 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/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $form{$name} = $value; } }