Добро пожаловать!






  Правила
 Забыли пароль?
 Регистрация

Разное полезное:

Главная arrow Новости arrow Скрипты в HandyCache RC1
Скрипты в HandyCache RC1 Печать E-mail
Автор Rick   
30.12.2007 г.
Image

Поддержка скриптового языка Lua в HandyCache RC1

Добавлена поддержка скриптового языка для обработки заголовков ответов.

В HandyCache RC1 c помощью скриптов можно обрабатывать заголовки ответов удаленного сервера на запросы HC и выбирать одно из действий:

  • остановить загрузку;
  • остановить загрузку с сервера и загрузить из кэша;
  • сохранить в кэш;
  • изменить заголовок ответа.
  • не выполнять никаких действий;

Чтобы опробовать работу скриптов, необходимо скачать zip-архив и распаковать его в папку НС.
Подробное описание см. ниже.




На данный момент скрипты в HandyCache могут использоваться для обработки ответов сервера.

Для начала использования скриптов в HandyCache необходимо:

  • в папке HC должны находиться файлы lua5.1.dll и lua.lst (из архива hc_script.zip);
  • скрипты должны храниться в подкаталоге \lua;
  • в список серверов-посредников добавить строку (использовать команду Добавить из буфера):
    #5#~#True#~#lua#~#script://lua/answer#~#lua.lst#~#.*

В списке серверов-посредников может быть несколько строк с файлами-списками для скриптов.

В файле lua.lst должны быть строки вида:

rule <script=lua\scriptname.lua>

здесь rule - правило, при его выполнении будет работать скрипт из файла lua\scriptname.lua.
Правило может представлять из себя регулярное выражение (признак регулярного выражения - символ # в первой позиции строки) или просто строку символов. Во втором случае заданная строка ищется в URL запроса и если таковая найдена, то правило считается выполненным.
Если в первой позиции строки стоит символ !, то правило считается исключением. Если выполняется исключение, то все правила, расположенные ниже этого исключения, пропускаются до конца файла или строки <new_block>.

Пример файла-списка:

drweb.com <script=lua\ex1.lua>
lostfilm.ru <script=lua\ex2.lua>
micex.ru <script=lua\ex3.lua>
pragma.ru <script=lua\ex2.lua>
!otc-stock.rbc.ru/targets/graph.ser?
rbc.ru <script=lua\ex1.lua>
rbcdaily.ru <script=lua\ex3.lua>
rin.ru <script=lua\ex3.lua>
<new_block>
#update.*\.drweb\.com <script=lua\ex1.lua>
finam.ru <script=lua\ex3.lua>
!www.am.troika.ru/graph/ <script=lua\ex2.lua>
www.am.troika.ru <script=lua\ex1.lua>
www.troika.ru <script=lua\ex3.lua>
<new_block>
narod.ru <script=lua\ex1.lua>
citforum.ru <script=lua\ex1.lua>
Все скрипты, соответсвующие сработавшим правилам, будут запущены НС в том порядке, в котором они расположены в файле-списке. При выполнении скрипта HC всегда ищет и запускает функцию main. Скрипт может использовать предопределенные глобальные переменные:
  • hc_header - заголовок, передаваемый скрипту;
  • hc_cache_file_size - длина файла в кэше (-1 если файла нет);
  • hc_action - действие, которое должен выполнить НС:
  1. save - записать тело в кэш;
  2. stop - остановить загрузку тела ответа;
  3. dont_update - прервать загрузку с сервера и передать клиенту файл из кэша.
  • hc_url - URL запроса;
  • hc_method - метод, использованный в запросе;

если скрипт изменяет заголовок, то он помещает результат в эту же переменную - в этом случае он должен присвоить переменной hc_header_replace значение true;

Пример скрипта находится в файле first.lua.

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

После выполнения последнего скрипта НС выполняет действие, заданное в переменной hc_action.

Информацию о языке Lua можно найти, например, здесь: english или по-русски

В файле LuaTest.exe находится программа для тестирования работы скриптов.