Эта тема на forum.dklab.ru


Ant: DNSearch (Denwer Search)
Последняя версия скрипта доступна по адресу: http://debugger.dklab.ru/download/scripts/dnsearch/latest.

Внимание, убедительная просьба к тем, кто использует DNSearch. Мне очень интересно, где и как Вы используете мой скрипт. Код DNSearch не содержит никаких фрагментов spyware, благодаря которым я бы мог получать статистику. И я не собираюсь использовать грязные методы получения статистики в будущем. Но мне очень интересно, где и как DNSearch работает. Так что если Вы где-нибудь его используете, сообщите, пожалуйста, об этом мне. Эта информация нужна только для моего собственного интереса и ни коим образом не будет распространяться без Вашего согласия. Спасибо.


# +-------------------------------------------------------------------------+
# | DNSearch (Denwer Search) |
# | Version: 1.4 [2006-04-15] |
# +-------------------------------------------------------------------------+
# | Copyright © Anton Sushchev aka Ant <http://forum.dklab.ru/users/Ant/> |
# +-------------------------------------------------------------------------+
# | Special thanks to: |
# | — Dmitry Koteroff aka dk <http://forum.dklab.ru/users/DmitryKoteroff/> |
# | — Ilya Lebedev aka WingedFox <http://forum.dklab.ru/users/WingedFox/> |
# | — <http://forum.dklab.ru/> and <http://Xpoint.ru/> (-; |
# +-------------------------------------------------------------------------+
# | Download: <http://debugger.dklab.ru/download/scripts/dnsearch/latest/> |
# +-------------------------------------------------------------------------+


ОСНОВНЫЕ ВОЗМОЖНОСТИ СКРИПТА.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

01. Алгоритм поиска:
— поиск работает прямым перебором фалов; не нужно заниматься индексацией;
— при отсутствии некоторых данных, скрипт установит значения по умолчанию.

02. Расширенный поиск:
— возможность выбора пути для поиска;
— возможность выбора логики поиска (и, или и т.п.);
— возможность выбора регистра (чувствительный или нет);
— выбор режима поиска:
+ обычный режим (всем известный);
+ т.н. режим «RegEx» (фраза считается регулярным выражением Perl).

03. Фильтрация поиска:
— Возможность гибкой настройки фильтрации поиска. То есть, указать где надо
искать, а где нет (при этом можно использовать RegEx для более гибкой
настройки).

04. Вывод результатов:
— выводимая информация содержит в себе:
+ путь к найденному файлу;
+ размер найденного файла;
+ заголовок из тэга «<title>»;
+ количество совпадений в файле;
+ небольшую фразу вокруг найденного текста:
— возможно установить её размер (в символах);
— очень «умный» алгоритм выделения найденных фраз;
+ строгое соответствие или нет (как в Яндексе).
— ревалентность вывода при сортировке результатов:
+ строгое соответствие;
+ количество совпадений;
+ размер файла;
— возможность постраничного вывода результатов.

05. Кэширование:
— возможно включить кэширование результатов поиска, при чём есть:
+ возможность установить директорию кэша;
+ возможность установить время жизни кэша;
+ возможность установить максимальный размер кэша;
— возможно включить кэширование путей поиска, при чём есть:
+ возможность установить директорию кэша;
+ возможность установить время жизни кэша;
+ возможность установить максимальный размер кэша.

06. Шаблонизация:
— Шаблонность скрипта позволяет настроить все выходные сообщения (вплоть до
ошибок) очень тонко. Шаблоны хранятся в HTML (и CSS) файлах, что позволит
легко их править.
— Многоязычный интерфейс.

07. Возможность поиска по любым архивам:
— в специальном файле необходимо указать опции и путь к распаковщику;
— скрипт распаковывает содержимое архива и ищет в нём;
— возможен удалённый просмотр найденных страниц:
+ специальный скрипт отдаёт необходимые файлы;
— возможно установить ограничение на размер распакуемого архива;
— возможно установить максимальный размер папки с распакованными архивами;
— функция работает на любой платформе.

08. Стандартизация:
— Perl-код написан с использованием ключа «-w» и прагмы «use strict;»;
— выводимый (X)HTML-код полностью соответствует стандарту XHTML 1.0;
— браузерам, которые «понимают» XHTML (Mozilla, Opera, Safari), (X)HTML-код
выдаётся с MIME-типом «application/xhtml+xml» (при включённой опции).

09. Юзабилити:
— прозрачная, мощная и интуитивно-понятная система позволяет работать людям
без большого опыта программирования (новичкам);
— удобная, кроссбраузерная (работает в IE, Opera, Mozilla) форма поиска;
— удобное подключение через SSI:
«<!--#include virtual="/cgi-bin/dnsearch/search.pl?action=form" -->».

10. Другое:
— возможность «поиска в найденном» (как в Яндексе).


УСТАНОВКА И НАСТРОЙКА.
~~~~~~~~~~~~~~~~~~~~~~

01. В файлах «search.pl» и «viewer.pl» в 1-й строке установите путь к
интерпретатору Perl, (если он отличается от «/usr/bin/perl»).

02. В файле «Conf/DNSconf.pm» установите переменные по Вашему вкусу. В принципе,
скрипт самодостаточный и никаких особых настроек не требует. Так что можете
смело пропустить этот пункт. Если Вы что-то захотите изменить (или какая-то
функция не будет правильно выполняться), то загляните в этот файл. К каждой
переменной есть подробный комментарий. Затруднений возникнуть не должно.

Если Вы хотите получить полноценную работу с кириллицей, то раскомментируйте
строки № 26,27,28 (в этом районе) в «search.pl». ВНИМАНИЕ! У Вас должны быть
установлены соответствующие модули!

03. В файле «Conf/archive.types» содержатся пути к распаковщикам архивов и
соответствующие им расширения файлов (можно указывать полное имя). Если в
процессе поиска скрипту встретится файл, расширение которого прописано в
массиве «@ARCHIVE_FILE» (он находится в файле настроек «Conf/DNSconf.pm»),
то скрипт попробует распаковать этот файл с помощью распаковщика для этого
расширения, который прописан в файле «Conf/archive.types». После распаковки
скрипт будет искать в распакованных файлах (по стандартным правилам).

ВНИМАНИЕ! Изначально DNSearch писался для Денвера, для которого рабочая
платформа — «Windows». Именно поэтому, по умолчанию все распаковщики указаны
для этой платформы. Если Вы собираетесь использовать скрипт на платформе
«*nix», то загляните в файл «Conf/archive.types» — там описаны некоторые
распаковщики для «*nix» (и их использование).

04. Закачайте папку «dnsearch» в директорию «cgi-bin» Вашего сайта. Не забудьте,
что «*.pl»-файлы желательно закачивать в ASCII-режиме, чтобы обеспечить
корректную замену CRLF на LF. О том, как включить этот режим, смотрите
документацию по вашему FTP-клиенту.

05. Установите права доступа (обозначения: [папка], «файл»):
[dnsearch] 755
«search.pl» 755
«viewer.pl» 755
«Tools.pm» 644
[Conf] 644
«*» 644
[templates] 644
«*» 644
[languages] 644
«*» 644

Всем временным папкам следует сопоставить права доступа 777. Учитывайте тот
момент, что понятие права доступа есть только в *nix-системах. Таким образом
права доступа следует выставлять только если Вы устанавливаете DNSearch под
*nix-платформу. Если же Вы ставите скрипт под Widnows, никаких прав доступа
устанавливать не надо.

06. Запустите «http://domain.com/cgi-bin/dnsearch/search.pl». Поисковую форму
можно встраивать в страницы с помощью директивы Apache Server Side Includes
(SSI): «<!--#include virtual="/cgi-bin/dnsearch/search.pl?action=form" -->».
Языковой интерфейс формы (и скрипта) можно установить с помощью опции «lng»:
«search.pl?action=form&lng=ru», «search.pl?lng=eng», и т.д. и т.п.


УСЛОВИЯ ИСПОЛЬЗОВАНИЯ.
~~~~~~~~~~~~~~~~~~~~~~

Данный скрипт является абсолютно бесплатным инструментом для поиска. Вы можете
использовать этот скрипт, как Вам хочется, кроме:
— Вы не можете использовать его в коммерческих целях;
— Вы должны сохранять комментарии с копирайтами в коде.

Никакие другие ограничения не накладываются.

Если Вы хотите внести изменения в исходный код, авторы будут рады получить Ваши
комментарии и замечания. Приятной работы!


ВОПРОСЫ.
~~~~~~~~

Появляющиеся у Вас вопросы и предложения Вы можете задать на форуме <dklab.ru> в
теме <http://forum.dklab.ru/denwer/base/Dnsearch-AScriptOfSearchForDenver.html>.
Мы обязательно Вам поможем.


ОТБЛАГОДАРИТЬ АВТОРА.
~~~~~~~~~~~~~~~~~~~~~

Если Вы используете DNSearch, он Вам нравится и у Вас есть желание, то Вы можете
помочь мне работать над его усовершенствованием. Есть несколько путей, с помощью
которых это можно сделать:
— Напишите мне (http://forum.dklab.ru/users/Ant/email/) где и каким образом Вы
используете DNSearch.
— Напишите мне Ваши мнения/предложения (любые отзывы) касательно DNSearch.
— Переведите языковой файл «languages/ru.lng» на язык, перевода для которого
ещё не создано и пришлите мне.
— Установите на Вашем сайте ссылку на ресурс <http://debugger.ru/>.
— Расскажите Вашим знакомым и друзьям о DNSearch.
— Установите на Вашем сайте ссылку на сайт Денвера (<http://www.denwer.ru/>).
— Рекомендуйте Вашим знакомым и друзьям Денвер.
— Перечислите некоторую сумму на один из нижеследующих кошельков WebMoney:
+ Z744883942015
+ R701701195185
+ E955357446392

Что бы Вы не сделали из приведённого выше списка, большое Вам спасибо за помощь!

Ant:
Обсуждение всего, что каким-то образом касается данной темы, прошу проводить здесь: http://forum.dklab.ru/denwer/base/Dnsearch-AScriptOfSearchForDenver.html.
Ant:
Скриншот страницы результатов поиска.
Ant:
Новая версия: 1.2 [14-06-2004]. См. первый пост.


Список изменений:
~~~~~~~~~~~~~~~~~

* DNSearch 1.2 [2004-06-14]
— Наконец-то дошли руки всё отладить. Исправлено несколько грубых ошибок.
— Оказалось, что формат CHM так устроен, что в нём могут содержаться вложенные
директории. Заточил скрипт под это.
— Добавлено кэширование путей поиска. Теперь поиск в одной и той же директории
по разным фразам, после кэширования производится на 40 процентов быстрее.
Кэш содержится в одном файле. В этом файле может быть закэшировано сколь
угодно много путей (вплоть до превышения лимита). Каждый набор путей имеет
свою точку отсчёта по времени, после превышения которого (лимита) удаляется.

Ant:
Новая версия: 1.2 [26-06-2004]. См. первый пост.

Список изменений:
~~~~~~~~~~~~~~~~~

* DNSearch 1.2 [2004-06-26]
— Исправлено несколько ошибок (как обычно (-; ).
— Отключена буферизация вывода («$|=1;»). Дело в том, что после долгой работы
скрипта (более 10 минут) IE, например, не отображал результаты, хотя скрипт
полностью завершал работу. После отключения буферизации эта ошибка исчезла.
[Владимир Палант, Юрий Насретдинов, Андрей Новиков]
— Теперь DNSearch будет искать в любом архиве, к которому укажут необходимый
распаковщик. Всё достаточно просто настраивается. Функция работает на разных
платформах (конечно, нужны соответствующие распаковщики). В «стандартной»
поставке в скрипт включены три утилиты для распаковки файлов: «unrar.exe» и
«unzip.exe» для «Win»- и «arCHMage» для «*nix»-платформы. В «денверовской»
версии предположительно останется только «unzip.exe» (слишком много места
эти утилиты требуют, к сожалению).
— Возможность указывать максимальный размер распаковываемых архивов. Архивы,
размер которых превысит предел, будут пропускаться. [Юрий Насретдинов]
— Разноцветная подсветка слов при просмотре распакованных архивов. [Rumata]
— DNSearch проверен в работе на платформе Linux Mandrake 9.1. Проблем не было.
Даже в тамошнем браузере «Konqueror» всё отобразилось отлично. Всё штатно.
Можно смело использовать DNSearch на хостинге с «*nix»-платформой.
— Новый, улучшенный дизайн вывода результатов.
— Все настройки вынесены в отдельный файл: «Conf/DNSconf.pm». Так удобнее.


P.S. Сегодня (точнее, вчера уже по тамошнему времени) Голландцы выиграли у Шведов по пенальти (счёт в основное время: «0:0»). По мне — так объявить, что игра «Португалия — Англия» была финальной и выдать главный приз Португалии. Давно я не видел ТАКОГО футбола. Браво! Ну всё, заканчиваю оффтоп. (-;
Ant:
Новая версия: 1.2 [01-07-2004]. См. первый пост.

Список изменений:
~~~~~~~~~~~~~~~~~

* DNSearch 1.2 [01-07-2004]
— Начато официальное ведение «списка изменений». Какие изменения я вспомнил —
те законспектировал. Многие события остались за кулисами. Впредь всё будет
чётко фиксироваться. [Дмитрий Котеров]
— Добавлена надпись «Пожалуйста, ждите.» во время поиска. [Дмитрий Котеров]
— После поиска, в форме сохраняются значения всех полей (JS).
— Добавлено большое количество mime-типов для «viewer.pl». [Дмитрий Котеров]
— Если для файла не будет найден mime-тип, то установится умолчательный «text/
plain». [Дмитрий Котеров]
— Блокировка (flock) файлов перед записью. [Дмитрий Котеров]

Ant:
Новая версия: 1.2 [24-09-2004]. См. первый пост.
* DNSearch 1.2 [24-09-2004]
— Отправка XTHML-кода браузеру как «application/xhtml+xml», если браузер знает
этот формат. Если нет, то данные отправляются как «text/html». Современные
браузеры, поддерживающие «application/xhtml+xml»: MZ, NN, Opera. Зачем нужна
такая отправка XHTML: <http://hixie.ch/advocacy/xhtml>.
— Сжатие результатов (только результатов) поиска перед их отправкой браузеру с
помощью Gzip. Для работы необходимы следующие модули: strict, warnings, CGI,
Carp, IO::Zlib. Если какого-то модуля не окажется в системе, сжатие не будет
производится (исключительной ситуации не будет).
— Подправлены JS-скрипты для совместимости с такими браузерами, как Firefox.
[Илья Лебедев]
— Небольшие косметические изменения.
Ant:
Новая версия: 1.3 [2004-12-10]. См. первый пост.

Список изменений:
~~~~~~~~~~~~~~~~~

* DNSearch 1.3 [2004-12-10]
— Теперь самую последнюю версию DNSearch можно всегда получить по адресу:
<http://debugger.ru/download/scripts/dnsearch/latest/>. [Дмитрий Котеров]
— Добавлена помощь к поиску. [Пaвел Koлабухов]
— Решена проблема с ссылками на локальные файлы в MZ. [juvio, Дмитрий Котеров]
— Ранее файл с кэшем мог использоваться до того, как закончится текущий поиск,
и все данные будут корректно записаны. Теперь это невозможно.
— Значительно улучшены шаблоны вывода. [Пaвел Koлабухов]
— По некоторым соображениям пока пришлось отказаться от сжатия данных (Gzip).
— Улучшен случайный выбор названиий для имён файлов с кэшем.
— Теперь пути для поиска прописываются в файле конфигураций: Conf/DNSconf.pm,
а не в файле-шаблоне «form.html». Во-первых, так удобнее, а во-вторых, этот
приём поможет защититься от неразумных хакеров.
— Улучшен выбор выдачи браузеру содержимого как XHTML. [Владимир Палант]
— Теперь при выборе режима «RegEx», ненужные опции устанавливаются в disabled.
— Исправлено несколько грубых ошибок.
Ant:
Новая версия: 1.3 [2005-02-12] (юбилейная ;-). См. первый пост.

Список изменений:
~~~~~~~~~~~~~~~~~

* DNSearch 1.3 [2005-02-12]
— Исправлен баг, который приводил к выводу сообщения об ошибке до заголовков.
— Исправлена ошибка, которая приводила к невозможности поиска по «0». [juvio]
— Введена проверка кеша на предмет дублирования. При необходимости дубликаты
удаляются.
— Значительно улучшены шаблоны вывода. ВНИМАНИЕ! Новые шаблоны несовместимы со
старыми версиями! Будьте внимательны при обновлении DNSearch.
— Добавлено больше комментариев для хеша «%PATHS» и функции «templatesParser».
[Дмитрий Котеров]
— Добавлен контроль за количеством копий одновременно работающих процессов. По
умолчанию он выключен. Включается в файле настрок «DNSconf.pm».
— Автоопределение текущей буквы диска в файле «DNSconf.pm». Только для Win32.
[Дмитрий Котеров]
— Оказалось, что Kaspersky Anti-Hacker блокирует обращение к локальным ссылкам
(вида «file:///») даже не занося при этом никаких записей в журнал. Добавил
предупреждение об этом. [juvio]
— Мелкие косметические изменения.
— Обновление предыдущей версии DNSearch (1.3 [2004-12-10]) в Денвере. [Дмитрий
Котеров]

Адрес для скачивания прежний: http://debugger.ru/download/scripts/dnsearch/latest.
Ant:
Новая версия: 1.4 [2005-06-27]. См. первый пост.

Список изменений:
~~~~~~~~~~~~~~~~~

* DNSearch 1.4 [2005-06-27]
— Реализован многоязычный интерфейс. ВНИМАНИЕ! В связи с этим дополнением, все
шаблоны, часть программного кода не совместимы со старыми версиями DNSearch.
[Игорь Варфоломеев, baev, Евгений Галашин]
— Иправлена ошибка работы опции «Регистр» в *nix. [Игорь Варфоломеев, Дмитрий
Котеров]
— Теперь, по умолчанию, страницы выдаются как «text/html», даже если браузер
поддерживает XHTML. Это связано с тем, что программисты не задумываются о
правильном XHTML-коде и вставляют в шаблоны скрипта код, не соответствующий
стандарту XHTML. Однако весь выходной код DNSearch по-прежнему соответствует
стандарту, а включить поддержку последнего можно через переменную «$XHTML» в
«DNSconf.pm».
— Мелкие косметические изменения.

Ant:
Новая версия: 1.4 [2006-04-15]. См. первый пост.

Список изменений:
~~~~~~~~~~~~~~~~~

* DNSearch 1.4 [2006-04-15]
- Попытка определения буквы диска в файле конфигурации «DNSconf.pm» на *nix-
подобных системах могла вызвать битую кодировку выходящих данных. Добавил
определение платформы Win32. [Сергей П <http://www.pavel-ko.net>]
- В результаты попадали только те документы, в которых было совпадение между
тегами <body> и </body>. Совпадения между тегами <tytle> и </title> не
попадали в результат, т.е. страницы не попадали в результаты, если искомый
текст находится только в заголовке. Исправил. [Alik]

yr: vapros
u menya sayt naprimer www.sayt.com i direk www.sayt.com/dir/ ya xochu delat poisk v /dir/ kak ya doljen nastroet? mail: www.musab@rambler.ru
Ant:
Есть файл DNSconf.pm. В нём настройки. В частности, смотрите вот этот блок:


# Перечень директорий для поиска. Всё очень просто. Каждая запись состоит из нескольких частей:
# «номер => [ "название опции", "путь для поиска", "путь для перехода", "язык" ],»
# Поле «язык» может содержать аббревиатуру языкового интерфейса, для которого данная запись
# предназначена, либо запись «all», что означает «для всех языковых интерфейсов».
# Вы можете использовать этот механизм очень гибко. Вплоть до того, что выдаваться файлы будут
# через какой-нибудь сторонний скрипт (для ведения статистики, например).
our %PATHS = (
1 => [ "В пакетах документации" , "/home/localhost/www/Docs/", "http://localhost/Docs/" , "ru" ],
2 => [ "В «http://localhost/»" , "/home/localhost/www/" , "http://localhost" , "ru" ],
3 => [ "В «$drive:/home/localhost»" , "$drive:/home/localhost" , "file:///$drive:/home/localhost", "ru" ],
4 => [ "В «/home»" , "/home/" , "file:///$drive:\\home\\" , "ru" ],
5 => [ "В «/usr»" , "/usr/" , "file:///$drive:/usr/" , "ru" ],
6 => [ "В корне диска «$drive»" , "/" , "file:///$drive:/" , "ru" ],
7 => [ "In documentation" , "/home/localhost/www/Docs/", "http://localhost/Docs/" , "eng" ],
8 => [ "In «http://localhost/»" , "/home/localhost/www/" , "http://localhost" , "eng" ],
9 => [ "In «$drive:/home/localhost»", "$drive:/home/localhost" , "file:///$drive:/home/localhost", "eng" ],
10 => [ "In «/home»" , "/home/" , "file:///$drive:\\home\\" , "eng" ],
11 => [ "In «/usr»" , "/usr/" , "file:///$drive:/usr/" , "eng" ],
12 => [ "In the root of «$drive»" , "/" , "file:///$drive:/" , "eng" ],
);


У вас будет что-то вроде
our %PATHS = (
1 => [ "По сайту www.sayt.com" , "/путь на сервере к dir - уточните у провайдера/", "http://www.sayt.com/dir/" , "ru" ],
);

P.S. На будущее: на этом форуме есть кнопка Т - перекодирует транслит. Пользуйтей ею.

Эта тема на forum.dklab.ru