#!/usr/bin/perl # üst satır serverdeki perl adresi içindir. farklıysa değiştirin. #################################################### # Arama motoru v 2.23 # 27/02/2000 # güncelleme 1 Haz. 2001 # kodlayan : Mesut Akcan # http://kaynak.cjb.net # http://makcan.virtualave.net # makcan@softhome.net #################################################### # cgide adım ve adresim haricinde istediğiniz değişikliği yapabilirsiniz. # Bu cgi satılamaz, bedava dağıtılabilir. # Ticari amaçlı, illegal, porno, ahlak dışı içerikli sitelerde kullanılamaz # Cgi yi doğru olarak kurarsanız Adınızı, e-mail adresinizi # ve cgi yi nerede kullandığınızı belirten bir e-mail gönderirseniz sevinirim. #################################################### # AŞAĞIDAKİ SATIRLARDA KENDİNİ WEB SAYFANIZA GÖRE DEĞİŞİKLİK YAPINIZ #################################################### $NT = 0; # 0 ise Unix, 1 ise NT sistem. Not: NT sistemde denenmemiştir. $lnks = 10; # her sayfadaki link sayısı $ort_klasor = '../html'; # aranılacak klasör adreslerinin ortak adresi. '../' ara2.cgi nin bir üst klasörüne denkdir. $ort_URL = 'http://makcan.virtualave.net/'; # yukardaki ort_klasör ün web adresi. sonunda / olacak @files =('*.htm','*.html','web/*.htm','link/*.htm'); # ort_klasör altında aranılacak klasör ve dosya türleri # yukardaki tanımlamaya göre sırasıyla # *.htm ile ortak klasörde htm uzantılı dosyalara bakılacak # *.html " " " html " " " # web/*.htm ile ortak klasörde bulunan web klasöründeki htm uzantılı dosyalara bakılacak # link/*.htm " " " " link " " " " " ### BURADAN AŞAĞIDAKİ SATIRLARDA DEĞİŞİKLİK GEREKMEZ. ##################################################### $ver='2.23'; $logdosya = "kelime.log"; $bos=" "; $ek = $ENV{'QUERY_STRING'}; if ($ek eq "top") {&toplist;} # en çok arananlar if ($ek eq "last") {&lastten;} # son 20 arama $sure=time; &formoku; @klmlr = split(/\s+/, $FORM{'kelimeler'}); $sayfano = $FORM{'sn'}; if ((@klmlr) && (!$sayfano)){&logla;} #kelime var VE sayfa no yok if ($sayfano){$sayfano--;} &htmlbasi; chdir($ort_klasor); foreach $file (@files){ if ($NT==1){$ls = `dir/b $file`;}else{$ls = `ls $file`;} @ls = split(/\s+/,$ls); foreach $temp_file (@ls){ if (-d $file){ $filename = "$file$temp_file"; if (-T $filename){ push(@FILES,$filename); } } elsif (-T $temp_file){push(@FILES,$temp_file); } } } ##### ARA ###### foreach $FILE (@FILES) { open(FILE,"$FILE"); @LINES = ; close(FILE); $html = join(' ',@LINES); if($html =~ m#(.*)#is ){$baslik = $1;} else{$baslik = $FILE;} if($html =~ m#]*?content="(.*?)"[^>]*>#is ){ $stanim = "$1
";} else{$stanim = '';} $html =~ s/\n/ /g; $html =~ s/<[^>]*>/ /g; $html =~ s/$bos/ /g; $html =~ s/ +/ /g; @doz = stat($FILE); $gen = @doz[7]; $dgnek= "Byte"; if ($gen>1024){$gen=int(($gen/1024)*10)/10;$dgnek= "KByte";} $gen .=" $dgnek"; $DT = @doz[9]; &dtarihi; foreach $klm (@klmlr) { if ($html =~ /$klm/i) { $array .= $klm." "; $degis="$klm"; $stanim =~ s/$klm/$degis/ieg; $html =~ s/$klm/$degis/ieg; $var = "e"; } } if ($array){ $bsay++; $html=~ s/$baslik//eg; $uz=length($html); if ($uz > 180){$uz = 180;} $adr = $ort_URL.$FILE; @bul[$bsay] .= "
$bsay . $array :
$baslik
$stanim"; @bul[$bsay] .= substr($html,0,$uz); @bul[$bsay] .= "...
--
$adr
$gen , Günceleme $ddate $dtime
"; } $array = ""; } if ($var){ #if ($sayfano == 0){ print"Aramaya uygun $bsay sayfa bulundu.
"; $farks=time-$sure; print "Arama süresi: $farks saniye
"; &sayfalar; #} $alt = ($sayfano*$lnks)+1; $ust = $alt+$lnks-1; if ($bsay<$ust){$ust=$bsay;} for ($art=$alt ; $art <= $ust; $art++){ print @bul[$art]; } print "
"; &sayfalar; } else {print "

Tanımlanan aramaya uygun sayfa bulunamadı!

";} &htmlsonu; #-------------------------------------------------------- # SON 20 ARAMA sub lastten { &dosyaac; $uz =$#dicerik; &htmlbasi; $sn = $uz - 20; if ($sn<0){$sn=0;} while ($sn <= $uz) { ($sayi,$k,$ss) = split(/\|/,$dicerik[$sn]); print "
  • $k
  • "; $sn++; } &htmlsonu; exit; } # EN ÇOK ARANAN 20 sub toplist { &dosyaac; @dicerik = sort {($b =~ /(\d+)/)[0] <=> ($a =~ /(\d+)/)[0]} @dicerik; &htmlbasi; $sn=0; while ($sn < 20) { ($sayi,$k,$ss) = split(/\|/,$dicerik[$sn]); print "
  • $sayi - $k
  • "; $sn++; } &htmlsonu; exit; } # LOGLA sub logla { &dosyaac; $satuz =$#dicerik; foreach $klm (@klmlr) { $kayit = 0; $varmi ='H'; while (($varmi eq 'H') && ($kayit <= $satuz)) { ($sayi,$k,$ss) = split(/\|/,$dicerik[$kayit]) ; if ($klm eq $k) { $sayi++; $deg = join ("\|",$sayi,$k,"\n"); splice(@dicerik, $kayit, 1); push @dicerik, $deg; $varmi = 'E'; last; } $kayit++; } if ($varmi eq 'H') { $yenikayit = join ("\|","1",$klm,"\n"); push @dicerik, $yenikayit; } } open (CNT,">$logdosya"); print CNT (@dicerik); close (CNT); } # DOSYA AC sub dosyaac{ open (CNT,"<$logdosya"); @dicerik = ; close (CNT); } # HTML BAŞI sub htmlbasi{ print <<"SON"; Content-type: text/html\n\n Arama Sonuçları

    Arama Sonuçları


    En çok aranan 20 şey - Son 20 arama


    SON } # HTML SONU sub htmlsonu{ print <<"SON";
    Arama makinesi v$ver programlayan Mesut Akcan http://kaynak.cjb.net
    SON } #---------------- sub formoku{ if ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); } else { $buffer=$ENV{'QUERY_STRING'}; } @ciftler = split(/&/, $buffer); foreach $cift (@ciftler) { ($isim, $deger) = split(/=/, $cift); if ($isim eq 'kelimeler'){$aklm=$deger;} $deger =~ tr/+/ /; $deger =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $FORM{$isim} = $deger; } } #-------------------- sub dtarihi { ($san,$dak,$saat,$gun,$ay,$yil,$hgunu,$yday,$isdst) = localtime($DT); @aylar = ("1","2","3","4","5","6","7","8","9","10","11","12"); @gunler = ("Paz","Pts","Sal","Çrş","Prş","Cum","Cts"); if ($san < 10) {$san = "0$san";} if ($dak < 10) {$dak = "0$dak";} if ($saat < 10) {$saat = "0$saat";} #if ($saat > 11) {$ap = "PM";} #if ($saat < 12) {$ap = "AM";} if ($gun < 10) {$gun = "0$gun";} $yil += 1900; $ddate = "$gun/@aylar[$ay]/$yil @gunler[$hgunu]"; $dtime = "$saat:$dak:$san "; } sub sayfalar{ if ($bsay>$lnks){ print "Sonuç sayfaları : "; $art=0;$xa=0; while ($xa<$bsay) { $art++; if (($art-1) == $sayfano){print "$art ";} else {print "$art ";} $xa+=$lnks; } print ""; } }