#!/usr/bin/perl
#
# REF: resoosearch.pl
# ResooSite v.0.9.6.6-1 -(p)Resoo 2002-2005
# (c)2005 - pascal blain / GNU GPL - General Public License
# http://www.resoo.com/resoosite
# pascal@resoo.org
#
my $ver = "resoosearch v.0.9.6.6-1 (c)2005";
require "resooconf.pl";
#use strict; ## [%filesindex]
## configuration utilisateur niveau 1 (resooconf.pl)
#my $dir_txt = "../txt";
#my $mesgdir = "../bbs/message";
#my $domaincgi = "http://pascal.resoo.org/resoo/cgi-bin";
#my $private = "private";
#my $font = "";
#my $finfont = "";
#my $fontpetite = "";
#my $finfontpetite = "";
#my $fontpetite_col = "";
#my $fontstitre = "";
#my $finfontstitre = "";
#my $fonttitre = "";
#my $finfonttitre = "";
#my $title = "resoo.org";
#my $urlperso = "http://www.resoo.org";
#my $couleur_cad = "#ffffff";
my $searchTXT = 1;
my $searchHTM = 0;
my $searchCAL = 0;
my $searchBBS = $bbs-1; #$bbs=1: pas de forum, $bbs=2/3: forum actif
## configuration utilisateur niveau 2
my @searchTXT = ($searchTXT,$dir_txt,"Article");
my @searchHTM = ($searchHTM,"","");
my @searchCAL = ($searchCAL,"","");
my @searchBBS = ($searchBBS,$mesgdir,"$forumtitre"); ## titre aussi utilisé dans le formatage du titre des réponses
my $searchTous = "Tout"; ## le titre pour la recherche sur tous les répertoires
my $site_url = $domaincgi; ## l'url de base des liens "réponses" proposés
my $usetitre = 1; ## 1 pour afficher le titre des page, 0 pour utiliser le lien
my $useindex = 2; ## 1 pour recherche sur répertoire indexé, 0 pour recherche directe sur fichiers, 2 pour "1" ET "0" en cas d'échec
my $maxsearch = 10; ## le nombre de réponses par page
my $maxmot = 4; ## le nombre de mots maximum (non inclus dans @badexpr) sur lesquels porte la recherche
my $descriptionlength = 100; ## le nombre de caractères affichés dans les réponses de chaque coté des mots trouvés
my @badexpr = ('un','une','des','le','la','les','mon','ton','son','sa','nos','vos','ses','leur','leurs','l','s','à','du','a','au','aux','est','en','et','ou');
## debug option
my $search_mode = "-s"; ## le mode par défaut de la console [s|sx|si|d|dx|di]
my $debug = 0; ## 1 pour afficher les commentaires, sinon 0
## secure et defaut
my @validsearch = (\@searchTXT,\@searchHTM,\@searchCAL,\@searchBBS);
my @validsearch_url;
foreach my $searchDIR(@validsearch){
if (@$searchDIR[0]){ push(@validsearch_url, @$searchDIR[1]);}
}
my $defaut_rep = $validsearch_url[0];
my $datasearch = "index.dat"; ## le nom du fichier de stockage de chaque répertoire indexé
my $action = 0;
my $searchtime;
my ($Args,$type,$rep,$repnew,$mot,$meth,$pagerep);
my $meth = 6;
my $type = "X";
my $util = "";
my $pass = "";
## traite le formulaire
$Args = $ENV{QUERY_STRING};
if ($Args){
$Args =~ s/%([0-9A-F][0-9A-F])/pack("C",oct("0x$1"))/ge;
$Args =~ tr/+/,/;
$Args =~ s/^1=//g;
$Args =~ s/\&[2345]=/\&/g;
$Args =~ s/ /,/g;
$Args =~ s/\&/ /g;
$Args =~ s/[\;\"]//g;
@ARGV = split(/ /, $Args);
}
## let's go !
print "Content-type: text/html\; charset=ISO-8859-1\n\n";
## ce que l'utilisateur veut faire
if ($ARGV[0] =~ /^-/) {
if ($ARGV[0] eq "-h") { $action = 1; }
elsif ($ARGV[0] eq "-x") { $action = 2; $rep = $defaut_rep; $mot = $ARGV[1]; }
elsif ($ARGV[0] eq "-s") { $action = 2; $type = $ARGV[1]; $rep = $ARGV[2]; $mot = $ARGV[3]; $meth = $ARGV[4]; $pagerep = $ARGV[5]; }
elsif ($ARGV[0] eq "-si") { $useindex = 1; $action = 2; $type = $ARGV[1]; $rep = $ARGV[2]; $mot = $ARGV[3]; $meth = $ARGV[4]; $pagerep = $ARGV[5]; }
elsif ($ARGV[0] eq "-sx") { $useindex = 0; $action = 2; $type = $ARGV[1]; $rep = $ARGV[2]; $mot = $ARGV[3]; $meth = $ARGV[4]; $pagerep = $ARGV[5]; }
elsif ($ARGV[0] eq "-d") { $debug = 1; $action = 2; $type = $ARGV[1]; $rep = $ARGV[2]; $mot = $ARGV[3]; $meth = $ARGV[4]; $pagerep = $ARGV[5]; }
elsif ($ARGV[0] eq "-di") { $useindex = 1; $debug = 1; $action = 2; $type = $ARGV[1]; $rep = $ARGV[2]; $mot = $ARGV[3]; $meth = $ARGV[4]; $pagerep = $ARGV[5]; }
elsif ($ARGV[0] eq "-dx") { $useindex = 0; $debug = 1 ; $action = 2; $type = $ARGV[1]; $rep = $ARGV[2]; $mot = $ARGV[3]; $meth = $ARGV[4]; $pagerep = $ARGV[5]; }
elsif ($ARGV[0] eq "-i") { $action = 3; $util = $ARGV[1]; $pass = $ARGV[2]; $rep = $ARGV[3]; }
elsif ($ARGV[0] eq "-id") { $debug = 1; $action = 3; $util = $ARGV[1]; $pass = $ARGV[2]; $rep = $ARGV[3]; }
else { print "~/resoosearch $ARGV[0] ???
\n
\n"; print "~/resoosearch.pl -h (pour lire l'aide)
\n
\n"; print "~/resoosearch.pl (pour affichage console)
\n
\n"; }
shift(@ARGV);
}
else{
## affichage console
if (!$debug){
&head_gen;
&pao_mini_haut;
print "
$font_cad";
# if ($expr){
print " Désolé, aucune réponse... \n"; # } print "$finfont |
\n |
\n \n |
\n \n |
\n Correspondance \;:\n "; if($meth == 7){ print " phrase exacte \; \; \;\n tous les mots \; \; \;\n étendue\n "; } elsif($meth == 4){ print " phrase exacte \; \; \;\n tous les mots \; \; \;\n étendue\n "; } else{ print " phrase exacte \; \; \;\n tous les mots \; \; \;\n étendue\n "; } print "  \; \;\n \n |
\n \n |
$font_cad";
print "$DataFILE[3]";
if ($usetitre){
print " - $DataFILE[1] \n"; } else{ print " - $DataFILE[0] \n"; } print "$font_cad$DataFILE[4] $finfont\n"; print "$DataFILE[0] \n"; print "$finfont |