WebScript.Ru
C:\   главная  ::   о сайте  ::  каталог скриптов  ::  гнездо  ::  форум  ::   авторам  :: Новостройки ::   ХОСТИНГ  ::

|| разделы::
|| поиск по сайту::

|| реклама::
|| новости почтой::
Рассылки Subscribe.Ru ::



Новости сайта WebScript.Ru
Популярные статьи

Hot 5 Stories

|| рекомендуем::




Поиск по FTP - тоже не сложно !


Прислал: Mike [ 18.12.2002 @ 10:01 ]
Раздел:: [ Веб-технологии ]


Эта статья является логическим продолжением статьи "Поиск по сайту - нет ничего проще". В ней мы рассмотрим способ организации поиска по FTP серверу. Конечно, он не претендует на "правильность", но зато прост в установке и использовании.

Сразу оговорюсь, что будет отсутствовать возможность поиска по маске (*.mp3) но можно будет искать, введя отдельно расширение (mp3) или имя файла (music).

В прошлой статье я рассказал о том, как установить и настроить CNSearch Pro. К сожалению, эта система не имеет возможности индексации FTP серверов, но зато при индексации страниц может изменять адреса (URL) обрабатываемого сайта.

Благодаря этому задача индексации FTP сервера сводится к написания врапера FTP->HTTP и индексации по HTTP с хитрым параметром подмены адреса.

Пишем врапер

Врапер - это CGI приложение, запускаемое из каталога cgi-bin HTTP сервера (например, Apache)

Задача врапера - считать каталог с FTP сервера и создать HTML страницу, где в заголовке будет указано название каталога на FTP сервере, а в теле страницы список файлов в этом каталоге.

Приведенный ниже код выводит содержимое FTP сервера ftp.chg.ru и запускается следующим образом: //www.site.com/cgi-bin/ftp.pl

#!/usr/bin/perl

sub escape {
($_)=@_;
s/([^a-zA-Z0-9_\-\/.])/uc sprintf("%%%02x",ord($1))/eg;
$_;
}

sub unescape {
($_)=@_;
tr/+/ /;
s/%(..)/pack("c",hex($1))/ge;
$_;
}

$dir=unescape($ENV{QUERY_STRING});
if ($dir eq "") {$dir="/";}

print "Content-Type: text/html\n\n";
print "<HTML><TITLE>$dir</TITLE></HEAD><BODY>\n\n";

$a=`(echo cd \\\"$dir\\\";echo ls) | ftp ftp://mp3.int.ru/`;

#print $a;

if ($a=~/(.*)usage:(.*)/ || $a=~/(.*)No\ssuch\sfile\sor\sdirectory(.*)/) {
print "not found";
print "</BODY></HTML>";
}
else {
print "<H1>".$dir."</H1>";
@d=split("\n",$a);

for ($i=0;$i<scalar(@d);$i++) {
if ($d[$i]=~/.{10}\s+\d+\s+.+\s+.+\s+\d+\s+.+\d+\s+[\d\:]+\s+(.*)/) {
$s=$1;
}
if (substr(@d[$i],0,1) eq "d") {
if ($dir eq "/") {
print "<a href=ftp.pl?/".escape($s).">".$s."</a><br>\n";
}
else {
print "<a href=ftp.pl?".escape($dir)."/".escape($s).">".$s."</a><br>\n";
}
}
else {
print $s."<br>\n";
}
}
}

print "</BODY></HTML>\n";

Результат работы врапера выглядит следующим образом:

Настройка индексатора.

Теперь остается только настроить индексатор CNSearch, и сделать это совсем не сложно. Ниже приведен конфигурационный файл search.conf

[Job ftp]
URL         //www.server.com/cgi-bin/ftp.pl?/
AFrom       //www.server.com/cgi-bin/ftp.pl?/
ATo         ftp://mp3.int.ru/

Вот вроде и все. Если у вас есть какие-то вопросы - задавайте в форуме, всегда отвечу.

Еще раз повторюсь, что если вы располагаете временем и средствами то лучше написать свою систему поиска - это не так сложно и при определенных навыках не займет более дня.




Нет комментариев.
Имя:
Email:
URL

Введите сумму двух чисел девять и одинн (девять+одинн=?)
Запомнить мою информацию

* Html запрещен* Ваш E-mail опубликован не будет.

Copyright © 2000-2001 WebScript.Ru nas@webscript.ru
Design © 2001 by Parallax Design Studio (aka Spectator.ru)
Все торговые марки и авторские права на эту страницу принадлежат их соответствующим владельцам.
Сгенерировано за: 0.0095010