Pro-search reference manual

Free open-source file search engine


Содержание

Вступление
Возможности
Установка
Скачать
Софт
Настройка
руководство пользователя
основная строка запроса
уточнить..
результаты
добавление ресурса
api
FAQ
BUGS
Альтернативные поисковики

Вступление

Возможности

Система файлового поиска и навигации в сетях и не только.

  • Написано полностью на Perl, webчасть может работать в mod_perlили FastCGI
  • Работа под любыми ОС- windows, freebsd, linux, ...
  • Использует СУБД mysqlили PostgreSQLили sqlite, возможен полнотекстовый поиск через sphinx
  • Разрабатывалось для быстрой работы с большим количеством файлов (от миллиона)
  • Быстрое сканирование ftp, windows shares, rsync, http[в разработке, а оно надо?]
  • Разные методы сканирования ftp (ls-lR, обход с возможностью возобновления)
  • Автоопределение кодировки ftp серверов
  • Обработка описаний из *.m3u, files.bbs, descript.ion, ...
  • Обход DC,ADC хабов, сбор файллистов
  • Обработка файл-листов DC++ (в результатах поиска как magnet, dchub://,adc:// ссылки)
  • proxy - Возможность скачивать с ftp,file,dchub через web интерфейс
  • Гибкая система выдачи результатов поиска (HTML, M3U, RSS, XML, в консоль, ...)
  • Плеер на странице результатов (видео, аудио, flash, картинки)
  • Возможно прикрутить любой дизайн или несколько (по выбору пользователя)
  • Возможность поиска только на включенных компьютерах (online)
  • Определение живости ресурса в реальном времени с веб-морды
  • Подсчет количества скачек файла/с ресурса
  • Голосования за-против ресурсов [рейтинг]
  • Навигация по ресурсам
  • Поиск в найденном [сложные запросы]
  • Различные сортировки результата
  • Возможность работы в кластере
  • Гибкая поддержка любых кодировок
  • Поиск с учетом транслита и ошибок написания (stemming)
  • Множество других, иногда уникальных фич


homepage: http://pro.setun.net/search/
sf.net : http://sourceforge.net/projects/pro-search

Демо тут: http://search.setun.net/ http://proisk.ru/

Основные идеи: полностью автоматическая, скоростная, универсальная система. минимум запросов к базе, минимум не нужного, максимум настраиваемая.

Любое коммерческое использование без согласия и % автору запрещено.

Если кому понравился данный продукт, и есть идеи как улучшить, или вы уже сделали изменения - принимаются патчи и мысли 8)

Установка

Скачать

release: http://pro.setun.net/search/download/?C=M;O=D
mirror on http://sf.net: http://sourceforge.net/project/showfiles.php?group_id=149797

svn  snapshot:

svn co svn://svn.setun.net/search/trunk/ search

trac:
http://svn.setun.net/search/trac.cgi/browser/trunk-> Download in other formats: Zip Archive
После скачивания такого архива необходимо скопировать директорию ./lib в ./web

Софт

для работы необходимо поставить и настроить

Web

  • apache or any http server with cgi
  • perl>=5.10 (DBI; DBD::mysql)
  • mysql>=3 или PostgreSQL или sqlite
  • [mod_perl]

Crawler

  • perl>=5.10 (DBI; DBD::mysql; Net::FTP; LWP; URI;)
  • mysql>=3 или PostgreSQL или sqlite
  • nmap (with winpcap for win32)
  • samba (unix)
  • bzip2 (для обработки файллистов DC++)
  • [rsync]

perl

ВНИМАНИЕ! рекомендуемая минимальная версия perl - 5.10 или выше. В более ранних возможны ошибки.

Во всех нормальных ОС перл установлен по умолчанию.

Установка необходимых модулей для perl в *nix:
cpan DBI Bundle::DBD::mysql Net::FTP LWP URI FCGI Net::DirectConnect HTML::Parser
или
perl -MCPAN -e shell
> [force] install DBI, Bundle::DBD::mysql, Net::FTP, LWP, URI, FCGI, Net::DirectConnect, HTML::Parser

Для windowsправильный Strawberry Perl: http://strawberryperl.com/
Устанавливаем Strawberry Perl в c:\usr\
Запускаем установку модулей с cpan как и для нормальных ос.
Strawberry Perl c модулями Установлен

Для windowsнеправильный устаревший способ: http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl
Устанавливаем ActivePerl в c:\usr\
Запускаем(Run) ppm-shell.bat или ppm.bat из папки C:\usr\bin
Выполняем данные команды в появившейся консоли:
install DBI
install DBD-mysql
install FCGI
install Net-DirectConnect
ActivePerl Установлен

mysql

http://www.mysql.com/downloads/mysql/
настройка:
в my.cnf или my.ini:

        
  [mysqld]
  ft_min_word_len = 1
  ft_stopword_file=''
  #default-character-set = cp1251
  #init_connect          = "set names 'cp1251';"

Рекомендуется изучить документацию mysql по вопросам настроек оптимизации. например если памяти 512М или более:

        
key_buffer=256M
sort_buffer=8M
table_cache=256
tmp_table_size = 64M

Рекомендуется размер key_buffer увеличивать до размера filebase.MYI или половины оперативной памяти.

PostgreSQL

В качестве СУБД можно использовать PostgreSQL.

Настройка под windows:
Скачиваем и устанавливаем стабильную версию 8.3 или более свежую. Для более ранних возможно придется прикручивать tsearch2
язык установки - English / English
далее ...
locale - C
кодировка - сервер - utf8 , клиент - utf8
сочиняем пароль (можно сразу вписать его в конфиг $config{'sql'}{'pass'} )
далее

Настройка под freebsd:

        
cd /usr/ports/databases/postgresql83-server/ && make install clean
cd /usr/ports/databases/postgresql-contrib/ && make install clean
echo postgresql_enable="YES" > /etc/rc.conf
/usr/local/etc/rc.d/postgresql initdb                                       
/usr/local/etc/rc.d/postgresql start           
createdb -U pgsql prosearch                                                 
psql -U pgsql -d prosearch -f /usr/local/share/postgresql/contrib/tsearch2.sql

     


Под другие OS: cамостоятельно поставьте PostgreSQL с модулем tsearch2 8-)

apache

http://httpd.apache.org/download.cgi
httpd.conf:

            
    AllowOverride All
    AddHandler cgi-script .cgi

или типа того [либо в httpd.confлибо /usr/local/etc/apache22/Includes/search.conf]:

        
Alias /search "/usr/local/www/search/web"
<Directory "/usr/local/www/search/web">
  AllowOverride All
  Order allow,deny
  Allow from all
  AddHandler cgi-script .cgi
  DirectoryIndex index.cgi
  options +ExecCGI
</Directory>

или отредактируйте под себя tools/search.confи скопируйте его в /usr/local/etc/apache22/Includes/search.confили добавьте к httpd.conf

Если апач стоит только для поиска - в htdocs можно положить файл .htaccess:

RedirectMatch permanent ^/$ http://your_site/search/

mod_perl

если еще не сделали - скопировать web/.htaccess.distв web/.htaccess
редактировать web/.htaccess

nmap

http://www.insecure.org/nmap/nmap_download.html
WIN32:dont forget:

$config{'nmap'} = 'c:/progra....../nmapwin/nmap';

желательно добавить в реестр:
regedit c:\progra......\nmapwin\nmap_performance.reg

windows: http://winpcap.polito.it/install/default.htm

samba

поддержка русских имен

smb.conf:

        
 [global]
 unix charset    = koi8-r
 dos charset     = cp866
 display charset = UTF8

rsync

Если Вы хотите сканировать rsync:// ресурсы - придется поставить rsync 8-)

bzip2

Необходим для обработки файллистов DC++.
Под windows придется скачать и поставить.
Например из http://unxutils.sourceforge.net/или http://cygwin.com/

freebsd

В freebsd все необходимое можно собрать из портов.

Автоматическая установка всего необходимого Вариант 1: обновите дерево портов (если первый раз - portsnap fetch extract, если второй и следующий разы: portsnap fetch update), cd /usr/ports/net/prosearch && make install clean Вариант 2: в дистрибутиве есть папка tools/prosearch: cd tools/prosearch && make install clean

Или ручная установка:


          
cd /usr/ports/databases/mysql55-server && make install clean
cd /usr/ports/databases/p5-DBD-mysql && make install clean
cd /usr/ports/www/p5-libwww && make install clean
cd /usr/ports/security/nmap && make install clean
cd /usr/ports/net/samba35 && make install clean
cd /usr/ports/net/rsync && make install clean



advanced:
monster base (>10M files) and monster server (>1G memory)
freebsd5,6 i386:
/boot/loader.conf:

        
kern.dfldsiz="2G"                # Set the initial data size limit
kern.maxdsiz="2G"                # Set the max data size

windows

Для windows есть несколько готовых пакетов apache+perl+mysql+... если есть желание, время и нервы - можете попробовать установить поиск под ними. а если есть умение - можно поставить все по отдельности.

http://en.wikipedia.org/wiki/Comparison_of_WAMPs

http://www.apachefriends.org/en/xampp-windows.html

http://topserver.ru

http://www.devside.net/server/webdeveloper

http://swissknife.bougakov.com

http://pampa.phpsoft.it

http://www.denwer.ru: http://www.denwer.ru/dis/Base/+ http://www.denwer.ru/packages/perl.html

Но не забудьте поставить nmap

cygwin

При желании можно поставить почти все в cygwin окружении.


        
   win: cygwin: TEST TODO UNFINISHED

   DESCRIBE: http://cygwinports.dotsrc.org/

             ONLY WEB INTERFACE


goto http://cygwin.com download and run setup.exe, install: perl, apache, gcc, make
download mysql source, unpack, run
 cd mysql-5.1.11-beta && configure && make install clean
install windows version nmap with winpcap
install perl modules: run:
 cpan DBI Bundle::DBD::mysql Net::FTP LWP URI FCGI Net::DirectConnect
if Bundle::DBD::mysql report error run:
 cpan
 cpan> force install Bundle::DBD::mysql

#link search/web/ to apache dir:
# ln -s /cygdrive/c/pro/search/web /var/www/htdocs/search
conf apache:
put to end of /etc/apache/httpd.conf:
Alias /search "/cygdrive/c/pro/search/web"
<Directory "/cygdrive/c/pro/search/web">
 AllowOverride All
 Order allow,deny
 Allow from all
 AddHandler cgi-script .cgi
 DirectoryIndex index.cgi
 options +ExecCGI
</Directory>
run apache:
 /usr/sbin/apachectl restart
conf search:

 cp /cygdrive/c/pro/search/web/config.pl.dist /cygdrive/c/pro/search/web/config.pl
 mcedit /cygdrive/c/pro/search/web/config.pl
change line to:
 require '/cygdrive/c/pro/search/confdef.pl';

 cp /cygdrive/c/pro/search/config.pl.dist /cygdrive/c/pro/search/config.pl
 mcedit /cygdrive/c/pro/search/config.pl
change line to:
 require '/cygdrive/c/pro/search/confdef.pl';

mysql conf:
                

Настройка

Коротко о главном

Для тех, кто в курсе:


            
copy|cp config.pl.dist config.pl
copy|cp web/.htaccess.dist web/.htaccess
edit config.pl , web/.htaccess
> mysqladmin create prosearch
> perl crawler.pl install --noscan file=range

где в файле range на каждой строке диапазон/ресурс
и запуск например 3х паралельных сканеров:
perl crawler.pl proc=3

основные понятия

Пути

Расположение системы на диске (пример):
1. положить все файлы в:
unix: /usr/local/www/search
win: c:\search

2. web часть:
Можно оставить и настроить alias с помощью httpd.conf
А можно и физически поместить директорию webв htdocs:
unix: можно создать ссылку: ln -s /usr/local/www/search/web /usr/local/apache2/htdocs/search
или скопировать: cp /usr/local/www/search/web /usr/local/apache2/htdocs/search

Создание файла счетчика: touch /usr/local/apache2/htdocs/search/count
chmod 666 touch /usr/local/apache2/htdocs/search/count

win: скопировать copy c:\search\web c:\apache2\htdocs\searchссылка вашего поиска будет http://хост/search

Создание файла счетчика: echo.>> c:\apache2\htdocs\search\count

Аналогично можно webпоместить в cgi-bin, но будут небольшие проблемы с доступом к *.css, *.js, img/*.png

Файлы конфигурации

confdef.pl- содержит настройки по умолчанию, ведется разработчиками.
НЕ изменяте этот файл.

В директориях с index.cgiи crawler.plнеобходимо создать файлы

config.pl- Ваши настройки, переопределяет содержимое. Рекомендуется получить его путем копирования из config.pl.dist и последующего пролистывания с раскомментированием понравившихся строк. confdef.pl, можно добавить что-то свое, например модуль сканирования какого-нибудь протокола (gopher 8)

для удобства при первоначальной установке скопируйте config.pl.distв config.pl

config.pl.dist- наиболее часто используемые отклонения от стандартных настроек

В директориях с crawler.plи index.cgiмогут находиться разные config.pl, может один (в одной оригинал, в другой ссылка или содержащий do 'другой';).

Минимальная конфигурация

Настройки по умолчанию являются оптимальными для большинства случаев. Менять конфигурацию не обязательно.

Настоятельно рекомендуем просмотреть весь confdef.plи все что хочется изменить внести в config.pl

Если вы не понимаете какой-либо параметр - его лучше не трогать.

база данных

Допустим база будет называться prosearch (по умолчанию в confdef.pl)

создание базы

вариант 1:
mysqladmin create prosearch
вариант 2:
прописываем правильный путь к клиенту mysql (если его нет в PATH) например:

$config{'mysql'} = 'C:/mysql/bin/mysql.exe';

и смотрим дальше:

создание таблиц

perl crawler.pl install

Настройка доступа на таблицы (если crawler и web на разных машинах или говорит что нет доступа)
редактируете tools/grant.sqlи
mysql > tools/grant.sql
пока не заработает 8-)

общая часть

файлы

Используемые файлы:
crawler.logЛог

bannedили то что в $config{'file_banned'}
-Используется для перечисления ресурсов, сканировать которые не следует например:

          
ftp://10.10.110.34
ftp://10.0.0.252
file://10.0.0.252
12.34.45.56

Также можно использовать $config{'banned'}:

$config{'banned'}{'ftp://1.2.3.4'} = 1;

В БД таблица banned пока не используется.

Полезно использовать когда один большой файловый архив имеет несколько адресов/протоколов - будем сканировать только не запрещенные.
Можно еще в конфиг web добавить

          
$config{'action'}{'ftp34'} = {'file://10.10.110.34/public' => 'ftp://10.10.110.34/pub'};
$config{'lng'}{'ru'}{'ftp34'}  = 'ftp';

для более корректного отображения таких ресурсов.

sql

паук

Если вы не хотите использовать один из протоколов (например samba(share) (file://)) то напишите в config.plдля crawler.pl:

$processor{'prot'}{'file'}{'disabled'} = 1;
периоды
dns
данные

Необходимо загрузить в базу данных диапазоны и/или ресурсы которые будем сканировать: создаем файл, например rangeи прописываем все диапазоны и непингуемые ресурсы например

            
10.13.32.0/27
10.13.110.0/24
ftp://192.168.50.10
ftp://10.10.201.201

Диапазоны могут быть любого вида понимаемого nmap (напр 172.16.0,2,6,7.0-254) или конкретные ресурсы (file://.. , ftp://.. , ...) загружаем в базу коммандой
perl crawler.pl file=range --noscan
ИЛИ указать все диапазоны и ресурсы прямо в коммандной строке например
perl crawler.pl --noscan 10.13.32.0/27 10.13.110.0/24 ftp://192.168.50.10

ipdig

Вытаскивает диапазоны или ресурсы с вражеских поисковиков, форумов, списков, итд 8)
примеры:
запуск во всех случаях (файл может быть локально, на ftp, file, http):
perl crawler.pl --noscan ipdig=http://search.zzz.ru/ftp_list.php

на страничке: присутствует 10.20.1.4 ... ftp://10.20.5.7 ..... 10.20.8.100
мы хотим добавить все подсети: 10.20.1.0/24 10.20.5.0/24 10.20.8.0/24
config.pl:
по умолчанию

мы хотим добавить все ftp: ftp://10.20.1.4 ftp://10.20.5.7 ftp://10.20.8.100
config.pl:

            
  $config{'dig_prot_add'} = 'ftp';
  $config{'dig_netmask'} = '';

или мы хотим найти только ftp://* , только ip, только что-нибудь еще -
- сочиняем свой $config{'dig_find_mask'}

Так-же возможна комманда ipdigf=file.txt , где в file.txt на каждой строчке по ссылке на страницы/файлы

параметры запуска

Внимание! паука можно запускать только из его директории. из других мест работать не будет. Если нужно запустить например из крона - cd /usr/local/www/search && perl crawler.pl params...

=== Некоторые Возможные Параметры crawler.pl:

crawler.pl [ Действия ] [ Цели ] [ Параметры ]

- в любом количестве и в любой последовательности

Действия:
installУстановка базы, таблиц, директорий. Можно запускать несколько раз.
proc[=NUM]запустить NUM Процессов сканирования (по умолчанию 1)
drop[=table]Удаление таблиц[ы].
purgeУдалить из базы устаревшие записи
delhost=HOSTудалит из всех таблиц HOST.
deldeadудалить хосты без файлов из таблицы resource
upload[=NUM]обработать содержимое в NUM потоков var/
index_disableВыключить индексы на таблице filebase
index_enableВключить, Но гораздо быстрее включать индексы с помощью
repair[=table]mysql починить все таблицы или если указано одну
mirпочинить таблицу с помощью myisamchk
flushmysql
analyzemysql
optimizemysql
mystatusmysql show processlist в файл mysql.???????.dump
hublist[=url]загрузить dc хаблист или $config{'hublist'}
mrtgвывод данных для графиков mrtg
statчуть статистики
upgradeпривести таблицы к текущей версии
helpвсе взозможные параметры

Цели:
[ip]10.1.2.3
[ip_range](nmap style) 192.168.0.0/16 '192.88-90.*.*'
[resource]ftp://10.2.3.4 \\10.3.4.5
scan=[ip|resource|resource]см выше.
[file]list.txt file=filenameвзять список для сканирования из файла
Файл может быть локальным или url
http://.. ftp://.. file://..
skip=[ip]равносильно записи в bannedили $config{'banned'}

Параметры:
[-]|[c[onf]]-KEY=VALUEУстановить значение $config{KEY} = VALUE
например --log_screen=1
Также можно указывать --xxx__yyy=zzz, что равносильно

$config{'xxx'}{'yyy'} = 'zzz';

Полезные параметры из $config{..}
--forceСканировать ресурс[ы] даже если не пришло их время
--ftp_recurse_forceрекурсивный обход ftp (вместо ls -R)(для серверов vsftpd)
--pingonlyНе сканировать порты, только пинг (для поддержки online (если не нужно каждый интервал [до|пере]сканировать ресурсы)) --log_dbgВыводить сообщения для отладки
--log_allВыводить все сообщения
--fastНе проверять на ошибки базы, не делать повторов при ошибках

Можно указывать хоть все параметры вместе - выполнены будут в оптимальном порядке. Например
perl crawler.pl drop install file=range --noscan 10.20.0.0/16 ftp://10.30.40.50

Любое действие можно указывать с одним "-" например
perl crawler.pl drop -install -debug

запуск

запускаем один или несколько процессов сканирования (например 3) (это можно запихнуть в автозагрузку)
perl crawler.pl proc=3
все - система живет, работает, цветет и пахнет.

Можно запустить демоном:
perl crawler.pl proc=3 &

Для *nix Вы можете отредактировать под себя search.sh.distи скопировать его например в /usr/local/etc/rc.d/search.shдля автоматичесмкой загрузки при старте системы.

Для одноктатного сканирования определенного ресурса можно запускать crawler с указанием цели (может быть несколько).
различные варианты:


              
  perl crawler.pl 10.10.0-20.0-255
  perl crawler.pl 10.10.1.1
  perl crawler.pl \\10.10.1.10 ftp://10.10.1.11
  perl crawler.pl file://10.10.1.11
  perl crawler.pl \\10.10.1.10\video\film
  perl crawler.pl file://10.10.1.111/music/



purge

Для очистки базы от мертвых ресурсов желательно запускать каждый день-неделю-... [пожже это будет встроено в proc и будет выполняться само]
perl crawler.pl purge

При желании, и если это будет иметь результаты в скорости поиска-вставки можно запускать
perl crawler.pl optimize

разное

После прерываний работы crawler в ./var/ могут появляться файлы, обработать их можно с помощью

perl crawler.pl upload

Для автоматической очистки ./var/ и ./tmp/ можно в крон добавить find /usr/local/www/search/tmp/ -mtime +30 -delete

dc

Бот встроен в crawler.pl и запускается автоматически из proc.
Загрузка списков хабов -

          
 perl crawler.pl --noscan dchub://hub.com 
 perl crawler.pl --noscan file=dchubs 
 perl crawler.pl --noscan hublist=dchubs.xml.bz2
 perl crawler.pl --noscan hublist=http://hubs.my.lan/hubs.xml.bz2

web

дизайн
Язык

По умолчанию автоопределение. Многие браузеры кроме оперы 8) по умолчанию отдают язык en.
Если иногда бывают настоящие en пользователи можно так:

$config{'lng_default_auto'} = 'ru'; # if autodetect fail - use ru

Если en пользователей не бывает - лучше убрать автоопределение так:

$config{'lng_default'} = 'ru'; # disable autodetect, use ru

(ручное переключение языка работать будет)

advanced

ftp login-pass

Если необходимо сканировать ftp с логином-паролем отличным от anonymous -
или сканируем ftp://login:pass@10.20.30.40 - в результатах так и будет c логином и паролем.
или добавляем в конфиг

            
$config{'fine'}{'10.20.30.40'}{'anonymous_user'} = 'xxx';
$config{'fine'}{'10.20.30.40'}{'anonymous_pass'} = 'yyy';

сканируем как обычно ftp://10.20.30.40

Оптимизация

если большой и неравномерный диапазон - лучше разбить на маленькие примерно таким скриптом:

for (0..210) { print "10.20.$_.0/24\n"; }

результат в файл, просканировать, везде где alive:0 - убрать в другой файл (его на вякий случай еще можно раза 2 просканировать в разное время - вдруг кто проявится)

Если сеть с большим количеством файлов (более 1-3 миллионов) - перед первым сканированием:
perl crawler.pl index_disable
как все пройдет:
perl crawler.pl index_enable
при последующих пересканированиях mysql будет задумываться только о новых файлах.

графики через mrtg
mrtg sample config:
mrtg.conf
          
...
Target[local.ips]: `cd /usr/local/www/search/ && perl crawler.pl mrtg --log_screen=0 --log_all=- --nolog_startstop --fast`
MaxBytes[local.ips]: 100000
Options[local.ips]: growright, gauge, noinfo, nopercent
WithPeak[local.ips]: ymw
Title[local.ips]: ip in local net
YLegend[local.ips]: ips now/total
LegendI[local.ips]: ips total
LegendO[local.ips]: ips alive
ShortLegend[local.ips]: ip
Legend1[local.ips]: - total ip's
Legend2[local.ips]: - alive ip's
Legend3[local.ips]: - total ip's max per 5 min
Legend4[local.ips]: - alive ip's max per 5 min

Target[local.res]: `cd /usr/local/www/search/ && perl crawler.pl mrtg=online --log_screen=0 --log_all=- --nolog_startstop --fast`
MaxBytes[local.res]: 100000000
Options[local.res]: growright, gauge, noinfo, nopercent
WithPeak[local.res]: ymw
Title[local.res]: online resource size
YLegend[local.res]: files/mbytes
LegendI[local.res]: files
LegendO[local.res]: Mbytes
ShortLegend[local.res]: .
Legend1[local.res]: - files
Legend2[local.res]: - mbytes
Legend3[local.res]: - files max per 5 min
Legend4[local.res]: - mbytes max per 5 min
...

OR with $config{'mrtg_out'}:
config.pl:
$config{'mrtg_out'} = '/usr/local/www/search/mrtg.out';
mrtg.cfg
Target[local.ips]: `cat /usr/local/www/search/mrtg.out`

for web:

          
  $config{'html_main_aft'} = '<table><tr><td>net alive:</td><td>shared:</td></tr><tr><td><a href="http://site/mrtg/local.ips.html">
   <img src="http://site/mrtg/local.ips-day.png"/></a></td><td><a href="http://site/mrtg/local.res.html">
   <img src="http://site/mrtg/local.res-day.png"/></a></td></tr></table><p/>';

как сделать картинки типов

alt-printscreen на окошке проводника photoshop ctrl-n enter ctrl-v zoom select ctrl-c ctrl-n enter ctrl-v ctrl-alt-shift-s png-128 enter

Хочу запустить один proc с специальными параметрами

Не все параметры из конфига можно переопределить из коммандной строки. Например $program{'upload'}{'proc'}- нельзя. Далее покажем как это обойти. Аналогично можно подстраивать любые действия-параметры

Вариант 1:

            
 #Устанавливаем любой параметр 
 $program{'upload'}{'proc'} = 1 if $param->{'example'};

Или

            
 #Устанавливаем любые параметры
 if ($param->{'example'}) {
   $program{'upload'}{'proc'} = 1 ;
   $config{'log_dbg'} = 1;
 }

и запускаем
perl crawler.pl proc --example

Вариант 2:

            
 $program{'example'}{'func'} = sub {
   $program{'upload'}{'proc'} = 1;
   $config{'log_dbg'} = 1;
   $program{'proc'}{'func'}->();
 }

и запускаем
perl crawler.pl example

Используя фантазию и данные примеры можно сделать себе жизнь легче и удобнее 8)

Как использовать utf везде [с 0.19.0 - утф по умолчанию]


            
... Ставил поисковик на последний Debian Lenny
Он весь из себя utf-8, для нормальной работы с русскими буквами в поиске по шарам было что сделано:
1.    Конфиг samba НЕ трогался (она по-умолчанию в utf-8)
2.    $config{'cp_db'} = 'utf-8';
3.    Были добавлены следующие строки в config.pl (до включения confdef)
$config{'fine'}{'file'}{'cp_res'} = 'utf-8';
$config{'cp_shell'} = 'utf-8';
$config{'cp_log'}   = 'utf-8';
4.   allow_cp_detect не трогался
 В результате все везде ищется и показывается нормально ...

руководство пользователя

основная строка запроса

уточнить..

результаты

добавление ресурса

api

FAQ

В: У вас дизайн плохой
В: У меня тормозит поиск
В: есть кмс vBadvanced (к форуму vBulletin) с моим дизайном. хочется подключить к этой кмс твой поисковик как страницу... есть возможность подключения html и php файлов.... как поисковик запихнуть в дизайн (кроме iframe)? :)
В: Остался вопросик, как заставить систему сканировать нужный мне диапазон
В: Есть ли возможность сканировать разные подсети на разных серверах(находящихся в этих подсетях) для уменьшения нагрузки на каналы между подсетками. Ведь проще забирать готовый SQL файлик, чем сканировать удаленную подсеть с неОчень широким каналом до нее, особенно когда там 20 и больфе ФТП со средним размером 100Гб.
В: У вас очень не оптимальная таблица!
В: Не ищет слова менее 4х символов
В: Как насчет web-админки?
В: насколько безопасно прерывать индексацию?
В: при поиске часто бывает что находит много (вроде бы) так как внизу появляется линейка 1 2 3 4 5 6 7 8 9 но! реально работают 1 и 2 ... остальные пустые
В: есть графа ЖИВЫЕ и есть СЕРВЕРЫ народ понимает что серверы - это сколько всего серверов, а ЖИВЫЕ сколько щас из них работает... но тогда непонятно 57живых 43серверов ....
В: с обозначениями в цветных квадратиках меня народ спросил что значит 48m 1d я ответил 48 минут 1 день... наугад если честно не понял что оно...
В: от чего зависит цвет квадратика?
В: как людям построить запрос конкретной фразы "firefox.1.6" ? как только не делали поисковик находит всё подряд.
В: как заставить пересканить диапазон?
В: Что такое рескан сети каждый час (первый вопрос в факе) ? Всех диапазонов, или проверка живости тех фтп-шников, которые отсканированы?
В: Как из крона указать проверить статусы онлайн. crawler.pl --pingonly ???
В: сколько времени займет crawler.pl purge Насколько безболезненно запускать это скажем раз в 2 для в 6 утра?
В: Как часто нужно запускать проверку online-статусов хостов?
В: У нас сеть состоит из большого количества диапазонов (штук 40). Как часто можно искать фтп-шники в такой большой сети??
В: Что произойдет после сканирования всех фтп-шников? Если я зпускаю скан командой crawler.pl proc=3 ? Процесс ищезнет или будет висеть в памяти (вроде в windows он висит в памяти). Как сделать что бы он просто убивался?
В: я забил вчера 294 фтп-шника в базу. Естественно просканировались чуть меньше сотни. Вопрос: когда начнется сканрование ресурсов, которые были недоступны в нужный момент? Через $config{'period'} (7 дней)?? Или кравлер будет пытаться просканировать через час, через два ?...
В: nmap с самбой обязательно ставить?
В: в скрипте есть возможность разрешить пользователям добавлять свои ресурсы в ручную?
В: Можно ли сделать, что бы по дефолту показывал ТОЛЬКО ОНЛАЙН-ресурсы?
В: Как сделать так чтобы в результаты поиска не попадали одинаковые директории много раз подряд
В: как запустить скрипт чтоб он лишь проверил какие серваки включены?
В: как заставить DC бот НЕ закачивать файллисты в базу после скачивания?
В: Насчет чистки. 2. Нужно обязательно запускать crawler.pl с переменной purge ?
В: 3. Или если я запустил crawler.pl proc=4 & то этого достаточно и он сам выполнит чистку через установленный промежуток?
В: 4. И если все таки нужно запускать crawler.pl с переменной purge, то можно запустить все сразу? crawler.pl proc=4 purge &
В: 5. И будет ли в таком случае purge выполняться каждые "$config{'purge_time'}" ?
В: как добавить код счетчика на страницы
В: чем отличается $config{'scan_timeout'} от $config{'period'}? я в confdef.pl заметил что $config{'scan_timeout'} = $config{'period'} - (3600*20) не совсем понятно для чего служит каждая переменная
В: В базу заносятся русские имена файлов с неверной кодировкой
В: почему в эксплорере стиль белый, а в опере черный
В: я удалил папку с ftp, а при поиске она все равно находится. когда произойдет удаление?
В: при попытке подключиться к локальному dc серверу, бот получает сообщение, что необходимо расшарить не менее 1 (2, 20, 60...) Gb для получения доступа. Можно ли это как-то обойти?
В: как прикрутить index.cgi к php
В: мне срочно не хватает вот ТАКОЙ фичи: .................................

В:

У вас дизайн плохой

О:

Дизайна вообще нет 8)
Но есть возможность прикрутить любой дизайн с помощью config.pl и CSS.

В:

У меня тормозит поиск

О:

Поиск не тормозит, тормозит mysql когда неправильно настроен или не настроен вообще а база более ~1000000 файлов.

В:

есть кмс vBadvanced (к форуму vBulletin) с моим дизайном. хочется подключить к этой кмс твой поисковик как страницу... есть возможность подключения html и php файлов.... как поисковик запихнуть в дизайн (кроме iframe)? :)

О:

1. выполнить из php скрипт
index.cgi view=html ..параметры..
предварительно отключив в конфиге вывод лишнего
2. забирать результаты поиска в xml index.cgi view=xml .... или со страницы http://.../index.cgi?view=xml&... и парсить их
3. iframe 8)

В:

Остался вопросик, как заставить систему сканировать нужный мне диапазон

О:

Диапазон можно задать
из коммандной строки (perl crawler.pl 10.10.10.10-20 10.10.20.10-20)
из функции в config.pl
из файла (на каждой строке по 1)

В:

Есть ли возможность сканировать разные подсети на разных серверах(находящихся в этих подсетях) для уменьшения нагрузки на каналы между подсетками. Ведь проще забирать готовый SQL файлик, чем сканировать удаленную подсеть с неОчень широким каналом до нее, особенно когда там 20 и больфе ФТП со средним размером 100Гб.

О:

Можно сделать красивее - на разных серверах делаем доступ к одному серверу с mysql - и они сразу заливать будут в базу.
на каждом свою табличку ranges прописать -
1. создать таблицы
perl crawler.pl install --sql_tranges=ranges1 --sql_tresource=resource1
perl crawler.pl install --sql_tranges=ranges2 --sql_tresource=resource2
perl crawler.pl install --sql_tranges=ranges3 --sql_tresource=resource3
2. занести
создать файлы например diapazon1 diapazon2 diapazon3,
perl crawler.pl --sql_tranges=ranges1 --sql_tresource=resource1 file=diapazon1
perl crawler.pl --sql_tranges=ranges2 --sql_tresource=resource2 file=diapazon2
perl crawler.pl --sql_tranges=ranges3 --sql_tresource=resource3 file=diapazon3
3. настроить
на каждом сервере в config.pl
на первом
$config{'sql_tranges'} = 'ranges1';
$config{'sql_tresource'} = 'resource1';
втором
$config{'sql_tranges'} = 'ranges2';
$config{'sql_tresource'} = 'resource2';
третьем
$config{'sql_tranges'} = 'ranges3';
$config{'sql_tresource'} = 'resource3';
и на всех не забыть
$config{'sql_host'} = 'db.net.ru.com';
$config{'sql_user'} = 'search';
$config{'sql_pass'} = 'cooolpaas';
Правда будут проблемы с top статистикой.. но это в todo 8)

В:

У вас очень не оптимальная таблица!

О:

Да, размер не оптимальный - mysql пока не дает удобной возможности сделать хорошо. Но количество операций = время при вставке-запросах минимально.

В:

Не ищет слова менее 4х символов

О:

Это настройка mysql по умолчанию. my.cnf или my.ini:
[mysqld]
ft_min_word_len = 1
после perl crawler.pl repair

В:

Как насчет web-админки?

О:

Она уже есть. phpmyadmin называется ;)

В:

насколько безопасно прерывать индексацию?

О:

Любой скан будет начат заного через $config{'scan_timeout'} (по умолчанию 20 часов)
ftp - при скане в recurse режиме безопастно - при прерывании пишется ./var/xxx.toscan и при upload или следующем скане продолжается с места разрыва
dc - если не во время скачивания файллиста - безопастно

В:

при поиске часто бывает что находит много (вроде бы) так как внизу появляется линейка 1 2 3 4 5 6 7 8 9 но! реально работают 1 и 2 ... остальные пустые

О:

Если посмотреть внимательнее - есть большие и маленькие цифры - в больших точно что-то есть, в маленьких - как повезет.
Связано с тем, что подсчет точного количества результатов бывает в разы дольше чем вывод одной страницы.
Если очень нужно знать точное количество - расширенный - E файлов [x]
Или добавить к строке адреса &count_f=on

В:

есть графа ЖИВЫЕ и есть СЕРВЕРЫ народ понимает что серверы - это сколько всего серверов, а ЖИВЫЕ сколько щас из них работает... но тогда непонятно 57живых 43серверов ....

О:

скан: ips - сколько просканировано ip в диапазонах (из таблицы ranges)
живые - сколько из них видно сейчас (включенные)
серверы - на скольких были обнаружены ресурсы

В:

с обозначениями в цветных квадратиках меня народ спросил что значит 48m 1d я ответил 48 минут 1 день... наугад если честно не понял что оно...

О:

первое число - сколько времени назад ресурс был виден живым (ping)
второе - сколько времени назад ресурс сканировался

В:

от чего зависит цвет квадратика?

О:

от времени последнего пинга

В:

как людям построить запрос конкретной фразы "firefox.1.6" ? как только не делали поисковик находит всё подряд.

О:

Если нужно учитывать отдельные буквы или цифры - в конфиг mysql:
ft_min_word_len = 1
потом perl crawler.pl repair
Но индекс от этого побольше будет. В версиях начиная от 0.15.15 можно пошаманить с regexp 8-)

В:

как заставить пересканить диапазон?

О:

perl crawler.pl --force диапазон

В:

Что такое рескан сети каждый час (первый вопрос в факе) ? Всех диапазонов, или проверка живости тех фтп-шников, которые отсканированы?

О:

Всех диапазонов. Ну и живость заодно тоже проверится.

В:

Как из крона указать проверить статусы онлайн. crawler.pl --pingonly ???

О:

Да.

В:

сколько времени займет crawler.pl purge Насколько безболезненно запускать это скажем раз в 2 для в 6 утра?

О:

Зависит от железа на котором это крутится и настроек mysql. Попробуйте 8)
Вполне безболезненно.

В:

Как часто нужно запускать проверку online-статусов хостов?

О:

А ее вообще нужно запускать?
Онлайновость кстати проверяется в момент выдачи результатов..

В:

У нас сеть состоит из большого количества диапазонов (штук 40). Как часто можно искать фтп-шники в такой большой сети??

О:

Сканирование сотни диапазонов класса C раз в пол часа не вызывает никаких проблем.

В:

Что произойдет после сканирования всех фтп-шников? Если я зпускаю скан командой crawler.pl proc=3 ? Процесс ищезнет или будет висеть в памяти (вроде в windows он висит в памяти). Как сделать что бы он просто убивался?

О:

Процесс будет висеть, как придет время сканить - начнет сканить.
Также скан начнется например при добалении ресурса с web.
proc именно для этого и делался - постоянно в памяти висит заданное количество процессов и занимаются чем положено 8)

В:

я забил вчера 294 фтп-шника в базу. Естественно просканировались чуть меньше сотни. Вопрос: когда начнется сканрование ресурсов, которые были недоступны в нужный момент? Через $config{'period'} (7 дней)?? Или кравлер будет пытаться просканировать через час, через два ?...

О:

Если $config{'scan_online_res'} = 1 - то как только ресурс будет замечен живым например при сканировании диапазонов.
Если $config{'scan_online_res'} = 0 - то через $config{'period'}.

В:

nmap с самбой обязательно ставить?

О:

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

В:

в скрипте есть возможность разрешить пользователям добавлять свои ресурсы в ручную?

О:

Да, по умолчанию включено для локальных диапазонов, для разрешения всем:
$config{'web_add_mask'} = '.';

В:

Можно ли сделать, что бы по дефолту показывал ТОЛЬКО ОНЛАЙН-ресурсы?

О:

$config{'default_param'}{'online'} = 0;
$config{'force_param'}{'online'} = $config{'online_minutes'} if !defined $param->{'online'};

В:

Как сделать так чтобы в результаты поиска не попадали одинаковые директории много раз подряд

О:

$config{'table'}{$config{'sql_tfile'}}{'path'}{'fulltext'} = undef;
потом drop install

В:

как запустить скрипт чтоб он лишь проверил какие серваки включены?

О:

perl crawler.pl proc --once --pingonly --noscan_res --noscan_dcbot

В:

как заставить DC бот НЕ закачивать файллисты в базу после скачивания?

О:

--dcbot_upload=0

В:

Насчет чистки. 2. Нужно обязательно запускать crawler.pl с переменной purge ?

О:

нужно

В:

3. Или если я запустил crawler.pl proc=4 & то этого достаточно и он сам выполнит чистку через установленный промежуток?

О:

недостаточно, не выполнит

В:

4. И если все таки нужно запускать crawler.pl с переменной purge, то можно запустить все сразу? crawler.pl proc=4 purge &

О:

не нужно

В:

5. И будет ли в таком случае purge выполняться каждые "$config{'purge_time'}" ?

О:

нет он выполнится ровно 4 раза подряд (при запуске каждого процесса по разу)

В:

как добавить код счетчика на страницы

О:

$config{'html_footer_top'} = q|
тут код счетчика
|;

В:

чем отличается $config{'scan_timeout'} от $config{'period'}? я в confdef.pl заметил что $config{'scan_timeout'} = $config{'period'} - (3600*20) не совсем понятно для чего служит каждая переменная

О:

период - частота сканирования
таймаут - через сколько пересканировать при оборванном скане

В:

В базу заносятся русские имена файлов с неверной кодировкой

О:

$config{'no_cp_detect'} = 1;

В:

почему в эксплорере стиль белый, а в опере черный

О:

Не пользуйтесь ie.

Или через конфиг возможно именить или прикрутить любой дизайн.

Мне не хочется возиться с багами ie6 и не хочется ставить и проверять на ie7 по причине его платности.

В:

я удалил папку с ftp, а при поиске она все равно находится. когда произойдет удаление?

О:

когда пройдет более

            
          $config{'purge_time'} ||= 3600 * 24 * 7; # delete if not scanned last (seconds). good value is $config{'period'} * 2
          

после запуска crawler.pl purge

В:

при попытке подключиться к локальному dc серверу, бот получает сообщение, что необходимо расшарить не менее 1 (2, 20, 60...) Gb для получения доступа. Можно ли это как-то обойти?

О:

Можно переопределять любые параметры DC протокола., config.pl.dist:

            
# $config{'fine'}{'dchub'}{'sharesize'} => '20g';      

В:

как прикрутить index.cgi к php

О:

virtual("/search/index.cgi?".$_SERVER['QUERY_STRING']);

В:

мне срочно не хватает вот ТАКОЙ фичи: .................................

О:

Разработка данной фичи стоит 10$ в час.

BUGS

Не бывает ПО без глюков. И у нас они есть. Но мы боремся. В данном разделе описаны глюки самого поисковика и окружающих его программ.

Если Вы обнаружили глюк:
1. Прочитайте данный раздел - возможно решение уже есть
2. Для crawler - добавте в вызов --log_all например:
perl crawler.pl proc --log_all
Для web - добавьте в адресную строку &debug=on например:
http://127.0.0.1/search/?q=xxx&debug=on
3. При обращении за помощю на форуме, по почте или в jabber указывайте то, что появилось из пункта 2 и версии ос, perl, mysql


        
uname -a
mysql --version
perl -V
      



1. nmap: Unable to determine what interface to route packets through to x.x.x.x
2. net:ftp: В activestate perl старых весий под windows не работает timeout. Скан может зависнуть пока не пнут.
3. crawler-samba: ' symol in description(m3u) file name samba dont get
4. crawler-samba: старее 3.0.8 smbclient -d0 -N -c 'recurse;ls' "//10.10.10.10/pub" выводит только самый верхний уровень директорий, вложенные не показывает
5. crawler-samba: иногда зависает и отжирает всю память
6. crawler- freebsd auto start from rc.d На момент загрузки вероятно не найдется smbclient и nmap.
7. mysql4-utf8 codepage install: SQL: error[1071,Specified key was too long; max key length is 1000 bytes]
8. perl perl -v: This is perl, v5.8.6 built for i386-linux-thread-multi uname -a : Linux leet 2.6.11-1.1369_FC4 #1 Thu Jun 2 22:55:56 EDT 2005 i686 i686 i386 GNU/Linux ошибки типа Undefined subroutine &main::full_host called at ./crawler.pl line 1225. Undefined subroutine &main::alarmed called at crawler.pl line 1939.
9. apache error.log: [error] [client 192.168.137.41] Can't locate Time/HiRes.pm in @INC (@INC contains:
10. win: activeperl: mysql.dll error after db connect on first command execution
11. нет проигрывателя
12. perl 5.6.1: Can't set DBI::db=HASH(0x86cb80c)->{PrintWarn}: unrecognised attribute or invalid value at /usr/local/lib/perl5/site_perl/5.6.1/mach/DBI.pm line 625.
13. crawler dcbot 0.17.1: bot kick: Пожалуйста не флудите с помощью слишком частого получения списка пользователей! Don't flood with GetNickList !
14. 0.17.1 index.cgi: Bizarre copy of ARRAY in aassign at lib/psmisc.pm line 149
15. Вроде все делаю правильно но crawler.pl выдает: Please create config.pl with parametrs (see config.pl.dist) and correct modes [No such file or directory]
16. 0.17.2 dcbot: не качает файллисты
17. 0.18.2 mysql: $config{'cp_db'} = 'koi8-r'; : Unknown character set: 'koi8-r'
18. 0.19.0: Cannot decode string with wide characters
19. 0.19.1: cutted wrong ips in goto

1.

nmap: Unable to determine what interface to route packets through to x.x.x.x

- Не сканируйте x.x.x.x 8)

2.

net:ftp: В activestate perl старых весий под windows не работает timeout. Скан может зависнуть пока не пнут.

Поставьте самый последний perl

3.

crawler-samba: ' symol in description(m3u) file name samba dont get

none

4.

crawler-samba: старее 3.0.8 smbclient -d0 -N -c 'recurse;ls' "//10.10.10.10/pub" выводит только самый верхний уровень директорий, вложенные не показывает

- Обновите самбу до последней http://samba.org или freebsd:/usr/ports/net/samba3

5.

crawler-samba: иногда зависает и отжирает всю память

Добавить параметр -b1200 к smbclient например так:

$config{'smbclient'} = $config{'smbclient'} . ' -b1200 ';

6.

crawler- freebsd auto start from rc.d На момент загрузки вероятно не найдется smbclient и nmap.

Решение:

$config{'smbclient'} = '/usr/local/bin/' . $config{'smbclient'}; $config{'nmap'} = '/usr/local/bin/'
          . $config{'nmap'};

где /usr/local/bin/ - путь к программам.

7.

mysql4-utf8 codepage install: SQL: error[1071,Specified key was too long; max key length is 1000 bytes]

$config{'sql_length_prot'} = 4; $config{'sql_length_name'} = 64; $config{'sql_length_path'} =
            128;

8.

perl perl -v: This is perl, v5.8.6 built for i386-linux-thread-multi
uname -a : Linux leet 2.6.11-1.1369_FC4 #1 Thu Jun 2 22:55:56 EDT 2005 i686 i686 i386 GNU/Linux
ошибки типа
Undefined subroutine &main::full_host called at ./crawler.pl line 1225.
Undefined subroutine &main::alarmed called at crawler.pl line 1939.

- perl по какой-то причине не видит папку . в @INC
решение: в crawler.pl и index.cgi:
require 'lib/misc.pl';
заменить на
require 'полный_путь_/lib/misc.pl';

9.

apache error.log: [error] [client 192.168.137.41] Can't locate Time/HiRes.pm in @INC (@INC contains:

закомментировать в index.cgi:
use Time::HiRes qw(time);
или обновить perl

10.

win: activeperl: mysql.dll error after db connect on first command execution

надо было подключить сторонний репозиторий в ppm
как подключить:
http://aspn.activestate.com/ASPN/docs/ActivePerl/5.8/faq/ActivePerl-faq2.html
сам репозиторий:
http://theoryx5.uwinnipeg.ca/ppms/package.lst
и оттуда установить DBD::mysql

Возможно это уже решено в свежих версиях ActivePerl по умолчанию.

11.

нет проигрывателя

web player compat:
ftp http file
opera,firefox img,swf all none
ie all all all

firefox file:// plugin: https://addons.mozilla.org/firefox/281/
or http://kb.mozillazine.org/Security_Policies
and enable links:
$config{'no_download_file_firefox'} = $config{'no_goto_file_firefox'} = 0;
$processor{'prot'}{'file'}{'view'} = 1 if $config{'client_firefox'};

12.

perl 5.6.1: Can't set DBI::db=HASH(0x86cb80c)->{PrintWarn}: unrecognised attribute or invalid value at /usr/local/lib/perl5/site_perl/5.6.1/mach/DBI.pm line 625.

$config{'sql_dbi_connect_params'} = { 'RaiseError' => 0, 'AutoCommit' => 1, 'PrintError'=>0, };

13.

crawler dcbot 0.17.1: bot kick:
Пожалуйста не флудите с помощью слишком частого получения списка пользователей!
Don't flood with GetNickList !

$config{'dchub_param'}{'auto_GetNickList' } = 0;

14.

0.17.1 index.cgi: Bizarre copy of ARRAY in aassign at lib/psmisc.pm line 149

обновить перл до последнего

15.

Вроде все делаю правильно но crawler.pl выдает: Please create config.pl with parametrs (see config.pl.dist) and correct modes [No such file or directory]

запускать перл из директории поиска

16.

0.17.2 dcbot: не качает файллисты

необходимо найти в crawler.pl 2 раза $config{'no_dl'} и заменить на $config{'__no_dl'}

17.

0.18.2 mysql: $config{'cp_db'} = 'koi8-r'; : Unknown character set: 'koi8-r'

$config{'sql'}{'koi8-r'} ='koi8r';

18.

0.19.0: Cannot decode string with wide characters

$config{'sql'}{'cp_int'} = 'utf-8';

19.

0.19.1: cutted wrong ips in goto

$config{'action_func'}{'gotoip'} = sub {};

Альтернативные поисковики


      
lan:
http://pro.setun.net/search             src
http://findexer.sourceforge.net         src
http://seek42.sourceforge.net           src
http://www.nixp.ru/shurup/coding        src
http://fsmbsearch.sourceforge.net       src
http://lostclus.linux.kiev.ua/chestnut-ftp-search src
http://ffsearch.sourceforge.net         src inactive
 http://femfind.sourceforge.net         src inactive
http://wildhoney.netbynet.ru            src=http://gksus.nm.ru inactive
http://www.strangesearch.net            src inactive
http://ftpsearchagent.sourceforge.net   src inactive
http://untzuntzlan.sourceforge.net      src inactive
http://turtle.ee.ncku.edu.tw/ftplocate/readme.english.html src inactive
http://codewalkers.com/seecode/157.html src inactive
http://mt.boston.ru/                    src inactive  Mocus FTP Searcher
http://www.zaval.org/products/file-search/index.html src inactive
http://ftp-search.web-notes.ru/         src
http://code.google.com/p/filefind/      src http://www.ffind.ru = http://ftp.onet.ru oldscan
http://chestnut-ftp-search.org.ua/      src


http://qfs.quadra.ru
http://search.qwerty.ru/
http://isuas.nkosino.ru                 300$
http://zebra.asearch.info/ru            $
http://ftpsearch.unilans.ru
http://www.icn.bmstu.ru
http://ftpsearch.ihome.net.ua
http://wildhoney.netbynet.ru/svk/index.php http://locate.in.ua/
http://www.yukh.ru/net/usearch
http://portal.localka.ru/modules.php?op=modload&name=resources&file=index
http://ftpsearch.deepweb.spb.ru/index.php?action=index
http://ftps.rsspnet.ru/
http://world.vesnet.ru/ftp/index.php
http://www.2inet.ru/index.php?portal=filefind&st=filefind&search=
http://homesearch.h15.ru windows borland
http://tz.ints.ru/ftpsearch/
http://ww.ints.ru/ftp/
http://filesearch.nsu.ru/
http://poisk.mosinter.net/
http://www.crestyle.com.ua/poisk.html $ win
http://go.giga.su/
http://jip.punklan.net/

one site:
http://mirror.switch.ch:8000/ftpsearch
http://forum.dklab.ru/perl/advises/DnsearchDenwerSearch.html src

region:
http://search.novgorod.ru/search.php?where=4  src=http://sergey.weblab.ru/projects/ffind inactive
http://www.filebox.kiev.ua

inet:
http://proisk.ru
http://www.filewatcher.com
http://www.mmnt.ru
http://www.files.lt
http://www.searchfile.ru
http://findfile.net                                         
http://www.findmyfile.com
http://www.fileindexer.com
http://ftpsearch.elmundo.es  [FTP search]
http://search.ftphost.net/indexer/search.aspx
http://www.filesearching.com = http://www.filesearch.ru
http://www.freewareweb.com/ftpsearch.shtml
http://oth2.net
http://oth.net
http://files.fifaleague.ru = http://ru.findfile.net meta
http://www.gegereka.com
http://www.ftps.ru
http://www.freewareweb.com/ftpsearch.shtml
http://ftp.findthatfile.com
http://globalfilesearch.net
http://www.findfiles.net http

http://reliz.ru = http://www.e-mp3.ru = http://pubftp.com RIP
http://ftpsearch.rambler.ru/db/ftpsearch RIP


catalog: 
http://www.ftpsearchengines.com
http://ligurio.blogspot.com/2007/02/blog-post.html