HandyCache форум

Главная категория => Общие вопросы => Тема начата: DenZzz от 04 января 2008, 12:27:22



Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 04 января 2008, 12:27:22
Собственно вышла уже новая версия НС, а на форуме затишье по этому поводу. Я понимаю, что программеры и так все поймут, но может кто-нибудь снизойдет к обыкновенным юзерам и накропает пару примеров на Lua? Конкретно, интересует обработка заголовков рисунков для автоматической фильтрации баннеров по размерам. Возможно, есть и еще какие-то полезные методы, но больше ничего не приходит в голову.

С помощью скриптов в HC сейчас можно сделать, например, следующее:
- не обновлять картинки по типу в заголовке "Content-Type"
- не обновлять файлы "по размеру" (если размер файла в кэше совпадает с его размером на сервере)
- кэшировать/блокировать тела ответов "403" и "404" (подробности тут (http://handycache.ru/component/option,com_smf/Itemid,10/topic,310.0/) и тут (http://handycache.ru/component/option,com_smf/Itemid,10/topic,848.0/))
- добавлять/удалять/править заголовки ответов сервера
и т.д.


Название: Re: Скрипты Lua в HandyCache
Отправлено: Андрей от 05 января 2008, 14:33:39
Полностью поддерживаю поднятие этой темы.
Необходимы именно шаблоны скриптов,так как  далеко не все знакомы с структурой языка программирования и серьёзная модификация приведённого first.lua затруднительна.
К примеру нужен шаблон на:
При обнаружении в Content-Type "image" добавление в конец url нужного расширения.


Название: Re: Скрипты Lua в HandyCache
Отправлено: The Alex от 05 января 2008, 19:47:59
Тоже присоединяюсь!
 
Освоить RegExp, в объёме необходимом для настройки правил в HC, не так уж сложно. Почитав пару дней рекомендованную литературу, потом за несколько минут написал несколько своих правил - и всё работает. Дело в том, что есть куча примеров (теже дефолтные правила). Подставляй в тренажер, добавляй ссылки, изменяй, смотри на результат... Очень помогает!

Про Lua пока такого сказать могу. Это ж целый язык. За пару дней не выучишь. Неплохо бы написать и выложить какое-нить пособие для начинающих, с конкретными рабочими примерами. Еще лучше - готовые настроенные опробованные скрипты от гуру... :) Шоб поставил в HC и усё работало! А там глядишь и желание появится научиться и самому что-нить сварганить...


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 06 января 2008, 12:48:58
Цитировать
Неплохо бы написать и выложить какое-нить пособие для начинающих, с конкретными рабочими примерами. Еще лучше - готовые настроенные опробованные скрипты от гуру... Улыбка Шоб поставил в HC и усё работало!
Знаю, что у DenZzz есть кое-какие наработки на эту тему. Надеюсь он их опубликует, если будет на то его добрая воля.

Для обсуждения "HC Promoting" создал отдельную тему (http://handycache.ru/component/option,com_smf/Itemid,10/topic,1125.msg9519/)


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 07 января 2008, 15:24:48
Выкладываю свои скрипты:

  • save_or_block_403_and_404.lua - если ответ сервера 403 или 404 и это картинка, то HC сохранит ее в кэше, иначе заблокирует загрузку.
  • dont_update_image_by_type.lua - если файл уже есть в кэше и это картинка, то HC прервет загрузку с сервера и возьмет картинку из кэша. Это полезно, когда файлы картинок имеют нестандартные расширения и дефолтный список "Не обновлять" на них не срабатывает.
  • dont_update_file_by_size.lua - если размеры файлов в кэше и на сервере равны, то прервать загрузку с сервера и взять файл из кэша.
  • block_long_file.lua - аналогично действию опции "Не загружать большие файлы"


В lua.lst порядок следования у меня такой:
Цитировать
#.  <script=lua\save_or_block_403_and_404.lua>
#.  <script=lua\dont_update_image_by_type.lua>
#.  <script=lua\dont_update_file_by_size.lua>
#.  <script=lua\block_long_file.lua>

В принципе мои скрипты автономные и могут работать независимо друг от друга и в любом порядке!


Название: Re: Скрипты Lua в HandyCache
Отправлено: mzr от 09 января 2008, 02:51:35
Не подскажете решение такой задачки?

Имеется форум, который периодически глючит. При этом его ответ выглядит вот так.
Код:
IPS Driver Error
There appears to be an error with the database.
You can try to refresh the page by clicking here

Если нажимать на "обновить" достаточно долго, есть шанс увидеть и нормальную страничку.

Вот лог ответа при ошибке
Код:
09.01.08 01:50:28,468 # 1679 <<< URL: http://10.253.0.39/forums/index.php?showforum=13
HTTP/1.1 200 OK
Date: Tue, 08 Jan 2008 22:48:34 GMT
Server: Apache/2.0.61 (Win32) PHP/5.2.5
X-Powered-By: PHP/5.2.5
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=win-1251
Content-Length: 378


А вот пример лога при загрузке нормальной страницы
Код:
09.01.08 01:44:55,109 # 1660 <<< URL: http://10.253.0.39/forums/index.php?showtopic=11020&pid=394722&st=0&
HTTP/1.1 200 OK
Date: Tue, 08 Jan 2008 22:42:59 GMT
Server: Apache/2.0.61 (Win32) PHP/5.2.5
X-Powered-By: PHP/5.2.5
Content-Encoding: gzip
Vary: Accept-Encoding
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=win-1251
Content-Length: 9747


Не подскажете как можно заставить HC самому обновлять страничку до появления нормального ответа?

Есть мысль, что для ответа длиной 378 нужно заменить "HTTP/1.1 200 OK" на "502 Client disconnected (HC)" (точно не помню). Как в lua делается поиск и замена?


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 09 января 2008, 14:23:45
Есть мысль, что для ответа длиной 378 нужно заменить "HTTP/1.1 200 OK" на "502 Client disconnected (HC)" (точно не помню). Как в lua делается поиск и замена?

Держи готовый скрипт:  replace_answer_code_to_502.lua

В lua.lst добавь строку:
10.253.0.39/forums/  <script=lua\replace_answer_code_to_502.lua>
чтобы этот скрипт работал только на твоем локальном форуме.


Название: Re: Скрипты Lua в HandyCache
Отправлено: mzr от 09 января 2008, 18:09:28
Спасибо!
Буду пробовать.


Название: Re: Скрипты Lua в HandyCache
Отправлено: ziablik от 15 января 2008, 22:17:21
Цитата из http://handycache.ru/content/view/27/26/ :
Код:
в список серверов-посредников добавить строку (использовать команду Добавить из буфера):

#5#~#True#~#lua#~#script://lua/answer#~#lua.lst#~#.*

Вопрос: где настройки этих "серверов-посредников"? Имеется ввиду "Внешний прокси"? Можно-ли более подробно, куда именно добавлять? Для чайников, так сказать.


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 15 января 2008, 22:32:27
где настройки этих "серверов-посредников"?

"Настройки / Общие / Управление загрузкой" - нижняя таблица


Название: Re: Скрипты Lua в HandyCache
Отправлено: ziablik от 15 января 2008, 22:44:22
Спасибо!
Имеет смысл в инструкцию добавить, а то сразу и не заметил :)


Название: Re: Скрипты Lua в HandyCache
Отправлено: Михаил от 09 февраля 2008, 12:29:38
DenZzz
Имхо, было б хорошо, если б скрипт dont_update_file_by_size умел учитывать длину добавляемых НС строк в HTML- и GZip-файлы. Сейчас для этой категории УРЛов необновление невозможно (например, http://dev.perl.org/perl6/doc/design/syn/S05.html), хоть файл реально и не изменяется от запроса к запросу.
Т.е. в скрипте надо парсить Content-Type и Content-Encoding.
Поможешь в этом вопросе?


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 09 февраля 2008, 16:13:53
Имхо, было б хорошо, если б скрипт dont_update_file_by_size умел учитывать длину добавляемых НС строк в HTML- и GZip-файлы.

С GZIP все просто: если есть "Content-Encoding" в заголовке ответа, то к длине тела прибавляем длину нужных заголовков + служебные символы и сравниваем это с длиной файла в кэше. Это сделать можно.

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

Завтра попробую написать соответствующий скрипт...


Название: Re: Скрипты Lua в HandyCache
Отправлено: Михаил от 09 февраля 2008, 17:50:57
У HTML можно проверять оба размера - с добавлением и без него. Если любой из этих размеров равен Content-Length, то не обновлять файл. Вероятность ошибочного срабатывания, имхо, пренебрежимо мала.


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 10 февраля 2008, 12:17:38
Михаил

Имхо, было б хорошо, если б скрипт dont_update_file_by_size умел учитывать длину добавляемых НС строк в HTML- и GZip-файлы.

Поправил скрипт. Попробуй.


Название: Re: Скрипты Lua в HandyCache
Отправлено: Михаил от 10 февраля 2008, 14:58:45
DenZzz
Попробовал на GZip - работает отлично. Позже затестю на HTML. Спасибо.  :good:


Название: Re: Скрипты Lua в HandyCache
Отправлено: rubel от 10 февраля 2008, 18:41:32
DenZzz
Скачал твои скрипты.А дальше что с ними делать?Куда поместить, где и что прописать?Поиском по форуму не нашёл.Будет ли отображаться срабатывание скрипта в мониторе?


Название: Re: Скрипты Lua в HandyCache
Отправлено: Михаил от 10 февраля 2008, 20:10:55
DenZzz
Погонял на HTML. Работает как надо!


Название: Re: Скрипты Lua в HandyCache
Отправлено: mzr от 10 февраля 2008, 20:54:10
Код:
10.02.2008/20:52:01 User_3:28:35/127.0.0.1 http://www.beta.acorp.ru/forum/viewtopic.php?t=3556 14578 14578/0 100% 802 "200 From RAMCache (HC)" lua, Dont update from script lua  Dont update from script

Небольшой вопрос. В мониторе показан размер странички 14578 и срабатывание скрипта "не обновлять". Реально из инета грузится только заголовок, а число 14578 показывает размер взятого из кэша?


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 10 февраля 2008, 22:23:19
Скачал твои скрипты.А дальше что с ними делать?Куда поместить, где и что прописать? Поиском по форуму не нашёл.

Почитай здесь... (http://handycache.ru/content/view/27/26/)

Реально из инета грузится только заголовок, а число 14578 показывает размер взятого из кэша?

Да.

Погонял на HTML. Работает как надо!

Хорошо. Поправил обработку лишних пробелов в заголовках, как в коде mai62. Выложил выше...


Название: Re: Скрипты Lua в HandyCache
Отправлено: Vat от 14 февраля 2008, 09:31:44
Хотелось бы, чтобы HC в скрипт передавал не только разамер файла в кеше, но и дату-время, когда этот файл был записан в кеше.
Таким образом скрипт dont_update_image_by_type.lua можно было бы доработать, и создать скрипт, кторый бы работал как правило "Не обновлять" с установленным критерием свежести.
Сейчас мы получаем размер файла на сервере, сравниваем с нашим размером... То есть делаем запрос на сервер, полюбому.
Если бы из HC мы сразу получили дату сохранения, то сравнили бы с текущей датой системы, и если файл все еще считается "свежим", то не делаем запрос на сервер вообще, а сразу подсовываем файл из кеша.


Название: Re: Скрипты Lua в HandyCache
Отправлено: Vat от 14 февраля 2008, 13:23:29
Чтобы не множить темы, продолжу тут.

1. Я так понимаю, что сперва срабатывают скрипты Lua, а потом уже "Преобразование URL" и всяческие Списки? Или каков порядок? Где находится исполнение скриптов Lua в иерархии выполнения?

2. Если скрипт установил action = 'save', но при этом этот урл попадает под правило - черный список, то файл сохранится в кеш или нет? Или, action указал = dont_save, но при этом благодаря правилу .* из списка "Не обновлять" оно попытается его закешировать (так как, допустим, этого файла нет в кеше). В этом случае будет кеширование или нет?
Или, другими словами, расширенный вопрос: если скрипт установил какой-либо action, то всегда выполнится этот action, или Списки могут его изменить?
Или при установленном action Списки вообще не срабатывают?

3. Опять про dont_update_image_by_type.lua. Пример: есть правило в "Не обновлять" с критерием свежести для всех картинок. Есть сайт, который аватары и картинки выдает без разрешения jpg, а просто вида megascript.php?getimage=234234&userid=fwe3333 (как пример), то есть - без разрешения.
И вот, чтобы в скрипте dont_update_image_by_type.lua не писать свой критерий свежести для картинок, хотелось бы как-то сделать так, чтобы после отработки скриптом потом обрабатывался url через списки.

Как пример, можно было бы создать в скрипте переменную url_from_lue, где будет создаваться урл по какому-то правилу, например, описанный выше случай формировать в виде megascript.php?getimage=234234&userid=fwe3333.jpg.
HC видит, что переменная url_from_lue не пустая, и ЕЕ парсит через списки (но контент берет из оригинального url). Если же переменная в скрипте не была установлена, то HC работает как и прежде.
Таким образом можно, например, написать скрипт, который легко отслеживает картинки через заголовки, дописывает нужное разрешение, а HC, исходя из правил в списках, дальше все отработает.
На самом деле тут открываются намного большие возможности, чем просто работа с картинками, которые без разрешения :-)


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 14 февраля 2008, 17:19:28
Сейчас мы получаем размер файла на сервере, сравниваем с нашим размером... То есть делаем запрос на сервер, полюбому.
Если бы из HC мы сразу получили дату сохранения, то сравнили бы с текущей датой системы, и если файл все еще считается "свежим", то не делаем запрос на сервер вообще, а сразу подсовываем файл из кеша.

Запрос на сервер делается для того, чтобы выяснить размер файла и его тип на сервере! Потом эти данные анализируются и принимается решение - стоит ли качать новый файл с сервера или можно просто взять его из кэша!

А то, что ты предлагаешь - давно умеет список "Не обновлять"! Полностью дублировать его функции скриптами не вижу смысла!

1. Я так понимаю, что сперва срабатывают скрипты Lua, а потом уже "Преобразование URL" и всяческие Списки? Или каков порядок? Где находится исполнение скриптов Lua в иерархии выполнения?

Скрипты проверяются на этапе загрузки из интернета, т.е. после проверки списков.

Цитировать
2. Если скрипт установил action = 'save', но при этом этот урл попадает под правило - черный список, то файл сохранится в кеш или нет?

"Черный список" сработает раньше скриптов, поэтому он просто заблокирует загрузку! До скриптов дело не дойдет...

Цитировать
Или, action указал = dont_save, но при этом благодаря правилу .* из списка "Не обновлять" оно попытается его закешировать (так как, допустим, этого файла нет в кеше). В этом случае будет кеширование или нет?

Список "Не обновлять" не занимается записью в кэш и он сработает раньше скриптов!
Если сработал список "Запись в кэш", а скрипт сказал "dont_save", то HC в кэш писать не будет - в данном случае приоритет у скрипта.

Цитировать
Или, другими словами, расширенный вопрос: если скрипт установил какой-либо action, то всегда выполнится этот action, или Списки могут его изменить?
Или при установленном action Списки вообще не срабатывают?

См. выше...

Цитировать
И вот, чтобы в скрипте dont_update_image_by_type.lua не писать свой критерий свежести для картинок

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

Цитировать
Таким образом можно, например, написать скрипт, который легко отслеживает картинки через заголовки, дописывает нужное разрешение, а HC, исходя из правил в списках, дальше все отработает.

Гонять URL второй раз по спискам - это лишняя трата времени и ресурсов!


Название: Re: Скрипты Lua в HandyCache
Отправлено: Vat от 14 февраля 2008, 17:38:32
Цитировать
Не вижу сложности в том, чтобы указать критерий свежести в самом скрипте, если это потребуется.
Как узнать дату файла, сохраненного в кеше? Если не видим сложности.


Цитировать
А то, что ты предлагаешь - давно умеет список "Не обновлять"! Полностью дублировать его функции скриптами не вижу смысла!
Если не понятно, не надо утверждать "то, что ты предлагаешь", ибо, судя по всему, ты не понял то, что я написал.
Какое хитроумное правило нужно сделать, что сказать: _всем_картинкам_, даже тем, которые без расширения джипег, гиф и иже с ними, _на_любом_ сайте, обновляться с критерием свежести 100 часов? Я весь внимания.


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 14 февраля 2008, 20:00:48
Если не понятно, не надо утверждать "то, что ты предлагаешь", ибо, судя по всему, ты не понял то, что я написал.

Похоже, ты и сам не понял, что написал! Та моя реплика относилась к этому твоему высказыванию: "то не делаем запрос на сервер вообще".
Я же тебе объяснял, что скрипты без запроса к серверу работать не могут, но зато это может список "Не обновлять"!

Цитировать
Какое хитроумное правило нужно сделать, что сказать: _всем_картинкам_, даже тем, которые без расширения джипег, гиф и иже с ними, _на_любом_ сайте, обновляться с критерием свежести 100 часов?

Без запроса к серверу, это нельзя сделать ничем, т.к. неизвестно, что за файл без расширения лежит в кэше!

Цитировать
Как узнать дату файла, сохраненного в кеше?

Вопрос не в том, как узнать, а в том, как сообщить ее скрипту! Пока этого сделать нельзя. Если идея приживется, то потребуется ввести новую переменную hc_cache_file_date...


Название: Re: Скрипты Lua в HandyCache
Отправлено: Дем от 26 февраля 2008, 12:14:58
ммм... штука хорошая, а развитие планируется? Хотелось бы иметь возможность и над запросом поиздеваться :)
Т.е. обработать то, что браузер послал, может быть даже до прогона по спискам - ведь скрипты инструмент более мощный.
Заодно там же можно обработать и путь к файлу в кеше, в который писать/читать будем.
Кстати, чтобы не дублировать - можно можно предусмотреть возможность отключения прогона по спискам - типа "мы уже всё сделали - дальнейшей обработки не надо"

Т.е. например - пишем в "серверы-посредники" строчку script://lua/query - lua_q.txt  и т.д. аналогично существующей
В скрипт передаём глобальные (модифицируемые) переменные  - текстовые hc_query с полученным от сервера запросом и hc_filename с путём к файлу в кеше. В hc_action возвращаем действие (load/stop/cache), в hc_list_ignore логический флаг "не применять скрипты" и в hc_header - заголовок ответа для случая, если не грузим с инета

Общий порядок выполнения тогда будет следующий:
lua/query - списки-загрузка-списки - lua/answer
Добавлено: 26-02-2008, 12:02:26

Ещё - есть такая штука, как LuaSQL (http://www.keplerproject.org/luasql/)

LuaSQL is a simple interface from Lua to a DBMS. It enables a Lua program to:

    * Connect to ODBC, ADO, Oracle, MySQL, SQLite and PostgreSQL databases;
    * Execute arbitrary SQL statements;
    * Retrieve results in a row-by-row cursor fashion.

LuaSQL is free software and uses the same license as Lua 5.1.


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 26 февраля 2008, 12:46:30
Цитировать
развитие планируется?
Планируется, и приблизительно так как ты пишешь. lua/answer было написано из расчета на возможное появление lua/request, lua/body, а может чего-то еще.
Цитировать
Ещё - есть такая штука, как LuaSQL
Есть. А еще мне запомнились сокеты для lua и возможность формирования/показа из lua окошек с контролами.


Название: Re: Скрипты Lua в HandyCache
Отправлено: Enver от 03 марта 2008, 10:46:33
Возможно ли заставить HandyCache с помощью lua выдавать размер загрузки (архива, проги, файла мультимедиа...) в специальной странице вместо того чтобы загружать файл

Например - кликаю на setup.com/setup.exe, HandyCache получает ХТТП-ответ, не загружая сам файл и выдаёт вместо файла страничку с его размером

Хотелось бы чтобы было легко редактировать список расширений на которые HandyCache так реагирует, а так же сделать так чтобы можно было кроме расширения смотреть Content-type

После получения инфы о размере файла можно будет при желании его загрузить через качалку

Всем заранее спасибо!

PS. Если это невозможно, прошу показать хотябы примерный скрипт для блокировки файлов по Content-type


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 03 марта 2008, 11:38:07
После получения инфы о размере файла можно будет при желании его загрузить через качалку

Размер заблокированных больших файлов видно в Мониторе HC - можно прямо оттуда скопировать URL, чтобы загрузить его качалкой.

Цитировать
Хотелось бы чтобы было легко редактировать список расширений на которые HandyCache так реагирует, а так же сделать так чтобы можно было кроме расширения смотреть Content-type

Все это можно сделать скриптом.

Цитировать
прошу показать хотябы примерный скрипт для блокировки файлов по Content-type

См. на первой странице.


Название: Re: Скрипты Lua в HandyCache
Отправлено: Enver от 03 марта 2008, 19:07:09
постил вопросы раза три и потом удалял, сам находя ответы :) остался такая вот просьба к вам:
напишите пожалуйста простейший скрипт луа для блокировки всего подряд. сам могу чё-нить помудрить, но хочется грамотного решения


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 03 марта 2008, 19:39:54
напишите пожалуйста простейший скрипт луа для блокировки всего подряд.

Держи:

Код:
function main()
  hc_action = "stop"
end

P.S. А "Черный список" тебя не устроил тем, что размер заблокированных файлов не пишет? Зато нет лишних запросов к серверу, что экономит трафик!


Название: Re: Скрипты Lua в HandyCache
Отправлено: Enver от 03 марта 2008, 20:34:51
Большое спасибо

Дык я ведь только exe/zip/rar......и т.д. буду блокировать с помощью скриптов. А остальное всё по стандартному чёрному списку. Просто я заметил что почти всегда после блокировки такого файла, запускал утилиту GetFileSize, чтобы узнать размер, что не очень удобно, даже очень неудобно. Теперь же благодаря такой великолепной фиче я просто буду смотреть в монитор HandyCache. Трафик при таком раскладе будет небольшой, тем более что он итак бы мной тратился через GetFileSize... Ещё раз спасибо


Название: Re: Скрипты Lua в HandyCache
Отправлено: sergo от 04 марта 2008, 01:39:40
мало делать обработку отдельными скриптами запросов и ответов. хороша возможность связи между обработкой запроса и обработкой ответа: "если в запросе было тото то в ответе делать такто". и чтоб срабатывание этой связаной пары могло привязываться к одному регэкспу url, пользователя


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 04 марта 2008, 11:46:14
"если в запросе было тото то в ответе делать такто"

Приведи реальный пример, для чего это можно использовать на практике.

P.S. В первую очередь планируется реализовать в скриптах возможность правки заголовков запросов и формирование ответов самим HC без обращения к серверу.


Название: Re: Скрипты Lua в HandyCache
Отправлено: Fernand от 25 марта 2008, 17:26:43
Есть такой момент в работе (см.скрин).
(http://img174.imageshack.us/img174/1166/2603200800002rh2.th.png) (http://img174.imageshack.us/my.php?image=2603200800002rh2.png)
Если отключить Lua, то в этом месте (вместо Access denied) появляется надпись
Код:
Not Found
The requested URL /towns/31561.htm&ac=49266 was not found on this server.
--------------------------------------------------------------------------------
Apache/1.3.34 Server at www.gismeteo.ru Port 80
Вопрос стоит так - как можно избавится от подобного текста? Сразу оговорюсь - на "Черном списке" висит прозрачный gif 1*1 и на правилах отрабатывает правильно..


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 30 марта 2008, 19:14:41
Если отключить Lua, то в этом месте (вместо Access denied) появляется надпись
...
Сразу оговорюсь - на "Черном списке" висит прозрачный gif 1*1 и на правилах отрабатывает правильно..

"Черный список" сейчас работает раньше скриптов, поэтому Lua не могут мешать срабатывать Черному списку!
А "Access denied" и "Not Found" выдает сам сервер Гисметео!


Название: Re: Скрипты Lua в HandyCache
Отправлено: IVAn Dealer от 08 июня 2008, 19:24:30
огромное спасибо DenZzz'у за скрипты!!!
всё отлично работает и трафик экономится со страшной силой :)

p.s. что-нибудь новенького появилось?


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 08 июня 2008, 21:41:24
p.s. что-нибудь новенького появилось?

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

Когда в HC появится обработка скриптами исходящих заголовков запросов, выложу скрипт "Блокировка внешних ссылок", т.е. на страницах будет блокироваться загрузка объектов с других сайтов. Обычно так грузятся всякие рекламные баннеры, счетчики и т.п. ...


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 19 июня 2008, 13:32:29
Ну к примеру ограничить размер файла 10-ю мегабайтами при условии что сейчас время с 20:00 до 24:00, а в остальное время не ограничивать.

См. вложение...


Название: Re: Скрипты Lua в HandyCache
Отправлено: The Alex от 19 июня 2008, 14:17:06
Как правильно изменить в скрипте block_long_file_by_time временные параметры в строке if time.hour, чтобы была разрешна блокировка файлов по размеру (например 300 кбайт) с 6.00 до 23.59, а с 00.00 до 5.59 снимались ограничения? Или, если можно, готовый скрипт? :oops:


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 19 июня 2008, 14:25:10
Как правильно заменить в этом скрипте временные параметры в строке if time.hour, чтобы была разрешна блокировка файлов по размеру (например 300 кбайт) с 6.00 до 23.59, а с 00.00 до 5.59 снимались ограничения?

Да там всего пару цифр надо подправить! 
В строке:  if time.hour >= 20 then   число 20 замени на 6
В строке:  if len > 10485760 then   замени число на 307200


Название: Re: Скрипты Lua в HandyCache
Отправлено: The Alex от 19 июня 2008, 14:49:06
 :D Грамаднющщее спасибо!


Название: Re: Скрипты Lua в HandyCache
Отправлено: divinets от 22 июня 2008, 19:28:07
А как записать в этом же скрипте время например с 20:00 до 02:00 и с 07:00 до 20:00.
Спасибо!


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 22 июня 2008, 20:07:56
А как записать в этом же скрипте время например с 20:00 до 02:00

if time.hour >= 20 or time.hour < 2 then

Цитировать
с 07:00 до 20:00.

if time.hour >= 7 and time.hour < 20 then


Название: Re: Скрипты Lua в HandyCache
Отправлено: divinets от 22 июня 2008, 20:16:20
А можно ли в скрипты по ограничению размеров файлов в зависимости от системного времени вставить исключения на некоторые сайты или ссылки (например по типам файлов)?
Спасибо!


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 22 июня 2008, 20:37:38
А можно ли в скрипты по ограничению размеров файлов в зависимости от системного времени вставить исключения на некоторые сайты или ссылки (например по типам файлов)?

Можно, конечно, и внутрь скрипта вставить, но проще и наглядне сделать это прямо в файле lua.lst .


Название: Re: Скрипты Lua в HandyCache
Отправлено: divinets от 22 июня 2008, 23:10:22
Можно вопрос не в тему? Как вставить исключение в файле lua.lst?
Условие я знаю как вставить, а вот как оно будет исключением пока нет.


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 23 июня 2008, 08:12:47
Как вставить исключение в файле lua.lst?

См. здесь (http://handycache.ru/content/view/27/26/):
Цитировать
Если в первой позиции строки стоит символ !, то правило считается исключением. Если выполняется исключение, то все правила, расположенные ниже этого исключения, пропускаются до конца файла или строки <new_block>.

Например:

!site.ru      - исключение в явном виде без RegExp и шаблонов
!#site\.ru   - исключение в формате RegExp
!+site.ru    - исключение в упрощенном формате


Название: Re: Скрипты Lua в HandyCache
Отправлено: Re:Flex от 19 июля 2008, 16:04:34
Подскажите, что нужно изменить в block_long_file.lua, чтобы изображения и видео не блокировались.


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 19 июля 2008, 16:45:45
Re:Flex
В файл lua.lst перед строкой
#.*  <script=lua\block_long_file.lua>
впиши строку
!#.*\.(jpg|jpeg|png|gif|bmp|ipg|avi|wmv|wma|mp3|mpe?g)(\?|$)


Название: Re: Скрипты Lua в HandyCache
Отправлено: Re:Flex от 22 июля 2008, 17:56:58
В файл lua.lst перед строкой впиши строку
Спасибо! А я в block_long_file.lua по контент-тайпу сделал… :)


Название: Re: Скрипты Lua в HandyCache
Отправлено: Byfuglien от 26 июля 2008, 21:33:20
Потоковое видео/аудио бессмысленно писать в кэш.
Дайте пожалуйста скрипт чтобы по наличию в ответе
Content-Type: application/x-mms-framed
запрещалась запись в кэш.
Сейчас оно все пишется сильно грузя винчестер, чтобы потом все равно стереться (ведь ответ обрывается пользователем, сервер его не обрывает никогда).


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 27 июля 2008, 12:28:42
Byfuglien
Цитировать
Дайте пожалуйста скрипт чтобы по наличию в ответе Content-Type: application/x-mms-framed запрещалась запись в кэш.
Не догадались мы сделать команду для запрета записи в кэш из скрипта. Сделаю в следующей версии.


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 27 июля 2008, 15:39:23
Не правильно я написал, можно и сейчас предотвратить запись в кэш файлов  с "x-mms-framed" в Content-Type. Вот скрипт.

Код:
--**********************************************************************
-- Скрипт для HandyCache v 1.00 RC1 (1.0.0.11) и выше
-- Автор: mai62
-- Назначение: Не писать в кэш файлы с "x-mms-framed" в Content-Type
--**********************************************************************

function GetContentType(s)
  _,_,x = string.find(s, "[cC]ontent%-[tT]ype: ([^ ]*)\r\n")
  if x~=nil then x = string.lower(x) end
  return x
end


function main()

 -- забираем тип файла из заголовка "Content-Type"
  type = GetContentType(hc_header)
 -- есть ли в поле заголовка "Content-Type" "x-mms-framed"
  if type~=nil then stream = string.find(type,"x-mms-framed",1,true)
  else stream = nil  end

    if stream~=nil then
       -- если в Content-Type есть "x-mms-framed", запрещаем запись в кэш
        hc_action = "dont_save"
    end

end


Название: Re: Скрипты Lua в HandyCache
Отправлено: The Alex от 14 августа 2008, 00:30:01
Требуется вставить исключение в lua.lst для блокировки обработки
скриптом dont_update_image_by_type адреса конкретной картинки...
 
Правильно ли я это сделал?
Цитировать
!http://danica.com/flytier/index.jpg <script=lua\dont_update_image_by_type.lua>
#.  <script=lua\save_or_block_403_and_404.lua>
#.  <script=lua\dont_update_image_by_type.lua>
#.  <script=lua\dont_update_file_by_size.lua>
#.  <script=lua\block_long_file_by_time.lua>


В принципе цели своей я добился, только правильно ли?

С уважением!


Название: Re: Скрипты Lua в HandyCache
Отправлено: The Alex от 16 августа 2008, 10:38:14
Хммм! Так всё таки правильно ли я вставил исключение в Lua.lst? (пост выше)
Отзовитесь, плиз! :)


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 16 августа 2008, 11:03:17
Цитировать
Так всё таки правильно ли я вставил исключение в Lua.lst? (пост выше)
Не совсем. Правильно будет так:
#.  <script=lua\save_or_block_403_and_404.lua>
!danica.com/flytier/index.jpg
#.  <script=lua\dont_update_image_by_type.lua>
<new_block>
#.  <script=lua\dont_update_file_by_size.lua>
#.  <script=lua\block_long_file_by_time.lua>
В настоящее время готовится инстукция по использованию скриптов в НС с учетом значительного расширения возможностей в следующей версии. Вот цитата оттуда
Цитировать
В файле lua.lst (luaR.lst) должны быть строки вида:

rule <script=lua\scriptname.lua>

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

; Файл-список скриптов LUA для обработки заголовков ответов сервера
;------------------------------------------------------------------

!#_rtsi?_|rts_chart_ru|informer\.rts\.ru/|/graph/plot\.swf$|/graphs/micex_
!#^http://192\.168\.\d+\.

#.  <script=lua\save_or_block_403_and_404.lua>
#.  <script=lua\dont_update_image_by_type.lua>
#.  <script=lua\dont_update_file_by_size.lua>
#.  <script=lua\block_long_file.lua>

; Еще несколько строк для примера:
!otc-stock.rbc.ru/targets/graph.ser?
rbc.ru <script=lua\ex1.lua>
<new_block>
!+citforum.ru/?ab/*.html
+img?.narod.ru/*.gif <script=lua\ex2.lua>

Все скрипты, соответсвующие сработавшим правилам, будут запущены НС в том порядке, в котором они расположены в файле-списке.
При выполнении скрипта HC всегда ищет и запускает функцию main. Скрипт может использовать предопределенные глобальные переменные.


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 09 сентября 2008, 00:55:51
На каждом сайте браузер запрашивает файл favicon.ico. На некоторых он есть, а на многих нет и ответ 404 Not found. Просьба помочь скриптом чтоб этот ответ 404 запоминать в кэше и повторно не лезть в интернет а выдавать этот ответ (или любой подсунутый файл) автоматически.

Скрипт в архиве.
В lua.lst ниже строки с <script=lua\save_or_block_403_and_404.lua> добавь строку:
#/favicon\.ico$  <script=lua\save_404.lua>


Название: Re: Скрипты Lua в HandyCache
Отправлено: Byfuglien от 09 сентября 2008, 12:59:24
DenZzz
Большое спасибо! Работает!


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 19 сентября 2008, 15:03:12
Выкладываю пару скриптов для обработки заголовков запросов для HC версии 1.00 RC2 (1.0.0.103) и выше:

_dont_update_image_by_type_in_cache.lua - не обновляет картинки по типу файла в кэше без запроса на сервер.

_block_external_links.lua - блокирует на странице загрузку внешних ссылок (объектов).
Очень эффективно режет весь баннеро-обмен путем сравнения доменов запроса с реферером. До Черного списка дело во многих случаях даже не доходит. Правда, случаются иногда и ложные срабатывания, когда нужные элементы оформления одного сайта грузятся с другого хоста. Для уменьшения подобных проблем сделал проверку наличия файла в кэше: если файл уже есть в кэше, то скрипт не блокирует эту загрузку. С прочими ложными срабатываниями борюсь добавлением исключений в luaR.lst или просто горячей клавишей для отключения скриптов...

Чтобы подключить скрипты для обработки запросов, надо в Серверы-посредники добавить правило:
#5#~#True#~#LuaR#~#script://lua/request#~#luaR.lst#~#.*

В luaR.lst должны быть строки:
Цитировать
#.  <script=lua\_dont_update_image_by_type_in_cache.lua>

!#\b(imageshack\.us|photofile\.ru|radikal\.ru)/
#.  <script=lua\_block_external_links.lua>

В архиве находятся как новые скрипты, так и те, что уже выкладывались ранее, а также примеры файл-списков luaR.lst и lua.lst, файл серверов-посредников mediator.lst и описание работы со скриптами HC_Lua_scripts.html .


Название: Re: Скрипты Lua в HandyCache
Отправлено: igyo от 21 сентября 2008, 13:51:27
Напишите пожалуйста скрипт, цель такая:

Напишу подробно, есть пользователь Sergey - ему разрешено ходить на сайты mail.ru, autodesk.com
Пользователь Anna - ей разрешено ходить на mail.ru и на ru-board
Пользователь Inna - ей только на konsultant.ru.

На этих сайтах должны работать правила из списков как обычно, все остальные сайты должны быть запрещены!

Помогите пожалуйста!


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 21 сентября 2008, 17:10:03
Напишу подробно, есть пользователь Sergey - ему разрешено ходить на сайты mail.ru, autodesk.com
Пользователь Anna - ей разрешено ходить на mail.ru и на ru-board
Пользователь Inna - ей только на konsultant.ru.

Скрипт _allow_urls_for_users.lua приложил к посту в архиве. Распакуй и положи его в папку Lua.

В luaR.lst добавь строку:   #.  <script=lua\_allow_urls_for_users.lua>
В списке "Серверов-посредников" должна быть строка для luaR и в папке HC библиотека lua5.1.dll из архива с новой версией HC 1.00 RC2 (1.0.0.103).


Название: Re: Скрипты Lua в HandyCache
Отправлено: Valeri614 от 22 сентября 2008, 15:58:59
DenZzz
А не пора ли открывать топик "Написание скриптов по заявкам"?  :)


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 22 сентября 2008, 21:03:17
А не пора ли открывать топик "Написание скриптов по заявкам"?  :)

Пока хватит этой темы, а там посмотрим...


Название: Re: Скрипты Lua в HandyCache
Отправлено: I.Dol от 22 сентября 2008, 21:30:11
А сейчас скрипты раньше списков работают похоже???


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 22 сентября 2008, 22:22:27
А сейчас скрипты раньше списков работают похоже???

Скрипты запросов (LuaR) - раньше, скрипты ответов (Lua) - позже.


Название: Re: Скрипты Lua в HandyCache
Отправлено: igyo от 23 сентября 2008, 18:12:24
DenZzz, большое спасибо, но насколько я понимаю это не много не то: в этом скрипте при разрешенном сайте полностью отключается "черный список", а его отключать не надо, нужно разрешить доступ к сайту при этом чтобы черный список работал.


Название: Re: Скрипты Lua в HandyCache
Отправлено: The Alex от 23 сентября 2008, 19:38:22
block_external_links.lua

Хорошая весчь! Было бы совсем хорошо, если бы на месте блокированного контента отображалось что-то типа blocked_external_links by script или картинка на выбор...

А то можно и не знать осуществовании подобного контента, я уже попадал так.

И еще пожелание - нельзя ли сделать так, чтобы в мониторе HC отображалось какой именно скрипт срабатывает (по аналогии с правилами) Например, скрипты пронумеровать и в мониторе писать lua.1, lua.2, lua.3 и т.п.

С уважением!


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 23 сентября 2008, 20:46:08
Было бы совсем хорошо, если бы на месте блокированного контента отображалось что-то типа blocked_external_links by script или картинка на выбор...

Сейчас отображается файл (HTML или картинка), прописанный в опции "Показывать файл" для "Черного списка", но можно скриптом и любой другой свой файл подсунуть при желании.

Цитировать
И еще пожелание - нельзя ли сделать так, чтобы в мониторе HC отображалось какой именно скрипт срабатывает (по аналогии с правилами) Например, скрипты пронумеровать и в мониторе писать lua.1, lua.2, lua.3 и т.п.

mai62 обещал сделать (http://handycache.ru/component/option,com_smf/Itemid,10/topic,125.msg13919/#msg13919) переменную hc_monitor_string, тогда добавлю идентификаторы в скрипты.



нужно разрешить доступ к сайту при этом чтобы черный список работал.

Легко! Поправил скрипт в своем посте выше... (http://handycache.ru/component/option,com_smf/Itemid,10/topic,1120.msg14477/#msg14477)


Название: Re: Скрипты Lua в HandyCache
Отправлено: igyo от 25 сентября 2008, 14:57:59
DenZzz, огромное спасибо! все работает!


Название: Re: Скрипты Lua в HandyCache
Отправлено: lllapk от 26 сентября 2008, 14:37:07
DenZzz, опиши максимально подробно (по шагам), пжлста, алгоритм взаимодействия НС со скриптом _block_external_links.lua
Обновил НС, вроде бы сделал как было описано, но скрипт не выполняет свои функции. Другие скрипты работают.


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 26 сентября 2008, 14:55:29
DenZzz, опиши максимально подробно (по шагам), пжлста, алгоритм взаимодействия НС со скриптом _block_external_links.lua

Внутри скрипта есть пошаговые комментарии - еще подробнее писать там не о чем!
Также HC_Lua_scripts.html можешь почитать...

Скорее всего, ты что-то не так прописал. Слово "LuaR" появляется в колонке "Правила" монитора? Покажи свои списки luaR.lst и mediator.lst .


Название: Re: Скрипты Lua в HandyCache
Отправлено: lllapk от 26 сентября 2008, 15:32:09
Все там появляется, списки не менял. В настройках только поставил галку для серверов-посредников.
Скрипт я вижу и вполне могу разобраться в алоритме. Меня интересует взаимодействие программы со скриптом.
Где можно посмотреть содержание hc_header?

http://img.pixs.ru/images/hcscreenjp_7371663_94014.jpg

Отключил условие в скрипте "Если файла нет в кэше" сработало со static.feed... и dyn. ... Но упорно не замечает a.gismeteo... и img.gismeteo...


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 26 сентября 2008, 16:39:49
Где можно посмотреть содержание hc_header?

В отладочном логе HC или сниффером. hc_header - это заголовки, передаваемые скрипту.

Цитировать
Отключил условие в скрипте "Если файла нет в кэше" сработало со static.feed... и dyn. ...

Значит, такие файлы уже были у тебя в кэше HC. Почисть кэш от рекламы - скрипт станет срабатывать.

Цитировать
Но упорно не замечает a.gismeteo... и img.gismeteo...

Так задумано! В моем скрипте сравниваются только домены второго уровня (в твоем примере они оба имеют значение "gismeteo"). Это сделано специально, чтобы не резать элементы оформления сайтов. Например, с img.gismeteo грузятся картинки этого сайта, без которых он выглядит ущербно...

Но при желании ты можешь ужесточить границы захвата доменного имени.
Например, чтобы захватывать весь хост целиком, надо перенести скобки в строке скрипта:
_,_,x = string.find(s, "^http://[^/]-([^/.]+)%.[^/.:]+:?%d*/")
так:
_,_,x = string.find(s, "^http://([^/]-[^/.]+%.[^/.:]+):?%d*/")


Название: Re: Скрипты Lua в HandyCache
Отправлено: lllapk от 28 сентября 2008, 18:27:43
Ок. вроде бы это работает... но возникла другая проблема: отрубает ссылки из поисковика. Причина именно в измении условия.
Еще неплохо бы добавить исключения типа img.*.ru/, images.*.com/... и т.п

Может быть стоить сделать отдельный список для сайтов, обрабатываемых скриптами?


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 28 сентября 2008, 20:30:41
Еще неплохо бы добавить исключения типа img.*.ru/, images.*.com/... и т.п

Ты можешь сделать это через файл luaR.lst, внутрь скрипта вставлять их не обязательно. Пример исключения для картинок есть в моем посте (http://handycache.ru/component/option,com_smf/Itemid,10/topic,1120.msg14426/#msg14426) на этой странице, подробности синтаксиса - в документации к скриптам.


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 28 сентября 2008, 21:34:05
Пользователь с ником Sheva и Malec - доступ только к icq и почте -> URL
...
Остальных пускать как обычно.

Образец скрипта в приложенном архиве. Недостающие URL добавь сам...


Название: Re: Скрипты Lua в HandyCache
Отправлено: the_ghost от 29 сентября 2008, 00:07:28
Не могу вникнуть в скрипты... Как сделать так, чтобы с 09-00 до 18-00 подключался внешний прокси? Проще всего, наверное, добавить его в список внишних прокси и выключить этот список. А скрипт уже по времени будет активировать или отключать его  ???


Название: Re: Скрипты Lua в HandyCache
Отправлено: igyo от 29 сентября 2008, 04:53:56
DenZzz еще есть предложение для скрипта _allow_urls_for_users :

Cайты которые запрещены выдают сообщение на английском языке что доступ запрещен. Можно указать свою html для показа?


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 29 сентября 2008, 09:49:19
Проще всего, наверное, добавить его в список внешних прокси и выключить этот список.

Скрипты пока не умеют отключать списки "Внешних прокси". Интереснее в этом плане было не просто отключение списка, а возможность выбора нужного прокси из скрипта. Пока до этого не дошли руки...



Можно указать свою html для показа?

Да, через опцию "Показывать файл" в "Черном списке" - она и на блокировки скриптов распространяется.


Название: Re: Скрипты Lua в HandyCache
Отправлено: the_ghost от 29 сентября 2008, 11:28:19
А
Скрипты пока не умеют отключать списки "Внешних прокси". Интереснее в этом плане было не просто отключение списка, а возможность выбора нужного прокси из скрипта.
Может есть возможность через командную строку управлять программой?


Название: Re: Скрипты Lua в HandyCache
Отправлено: lllapk от 29 сентября 2008, 11:46:05
Может ли скрипт выводить данные в лог? и как это сделать?


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 29 сентября 2008, 11:54:42
Смотря чем конкретно ты хочешь управлять. Вероятно ты хочешь управлять внешними прокси.
Списками внешних прокси (отдельно условных и безусловных) можно управлять через командную строку утилиты hccmd (UnconditionalProxy on|off или ConditionalProxy on|off). Управлять кроме этого и отдельными элементами списков можно через http-протокол. Чтобы посмотреть управление через http, нужно из браузера вызвать строку http://handycache.cmd/cmd_user/Control
где cmd_user - имя пользователя из списка пользователей НС (чтобы пользователь имел доступ к управлению, его имя должно начинаться с cmd_).
Как происходит управление конкретными функциями можно посмотреть в тексте html-страниц, которые формирует HC.


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 29 сентября 2008, 12:04:12
lllapk
Цитировать
Может ли скрипт выводить данные в лог? и как это сделать?
Не может. А что ты хотел бы туда вывести? И какой конкретно лог (лог обмена или лог монитора) ты имеешь ввиду?

P.S. А чего вдруг этот вопрос в этой теме? Думаю, модератор будет недоволен.


Название: Re: Скрипты Lua в HandyCache
Отправлено: lllapk от 29 сентября 2008, 13:52:36
Для отладки алгоритма.
Какой именно значения не имеет.
Как тогда можно просматреть промежуточные значения?
(Промахнулся, извините пожалста. Хотел записать в тему по скриптам... переместите, пжста, в ту тему)


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 29 сентября 2008, 17:08:14
Как тогда можно просматреть промежуточные значения?

Промежуточные значения выполнения скрипта?
Пользуйся LuaTest.exe для отладки. Значения некоторых переменных там выводятся.


Название: Re: Скрипты Lua в HandyCache
Отправлено: lllapk от 30 сентября 2008, 10:05:55
В том то и дело, что значения НЕКОТОРЫХ (а точнее только глобальных) переменных. А мне нужно локальных и во время работы скрипта. Буду думать...


Название: Re: Скрипты Lua в HandyCache
Отправлено: lllapk от 30 сентября 2008, 15:49:19
Как можно сюда передать свой вариант крипта _block_external_links?


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 30 сентября 2008, 18:24:05
Как можно сюда передать свой вариант крипта _block_external_links?

Прикрепи к своему посту, как написано здесь... (http://handycache.ru/component/option,com_smf/Itemid,10/topic,948.msg7857/#msg7857)


Название: Re: Скрипты Lua в HandyCache
Отправлено: 4water от 30 сентября 2008, 22:20:43
изменяю hc_url а url не изменяется


Название: Re: Скрипты Lua в HandyCache
Отправлено: Михаил от 01 октября 2008, 00:22:05
И по задумке меняться не должен. Надо менять hc_header.

Кстати, полностью поддерживаю твое мнение о hc_header_replace. Постоянно подтверждать изменение заголовка еще и отдельным присвоением значения этой переменной действительно обременительно. Помимо этого своим наличием она создает у пользователя напрасную иллюзию полезности других возможных вариантов действий:
- изменить hc_header и присвоить hc_header_replace=false;
- не менять hc_header и присвоить hc_header_replace=true и др.
Предлагаю эту переменную убрать. Благо это не должно никак сказаться на работе уже существующих скриптов.


Название: Re: Скрипты Lua в HandyCache
Отправлено: lllapk от 01 октября 2008, 08:28:09
Мой вариант скрипта...
Добавить условие в LuaR ^(http://)?(ima?ge?s?)\..+\.(com|ru|info|net|ua)
(сам вижу, что условие не оптимизировано, исправите эту оплошность, пожалста)


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 01 октября 2008, 10:36:08
Мой вариант скрипта...

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

Кстати, все это я уже пробовал раньше! Приходилось постоянно отключать скрипты для захода на многие сайты, иначе они смотрелись крайне голо и ущербно: где стили блокировались, где меню с кнопками пропадали или не работали, где картинок в оформлении вообще никаких не было, где переходы по ссылками не работали и т.д.
А проверка наличия файла в кэше была сделана по предложению mai62, чтобы не приходилось каждый раз отключать скрипты при повторном заходе на проблемный сайт.

P.S. И не забывай в шапке скрипта указывать, что он в твоей редакции!


Название: Re: Скрипты Lua в HandyCache
Отправлено: lllapk от 01 октября 2008, 10:44:40
Учту.
По-поводу файла в кэше: когда это .html?, то он его начинает обновлять, что не нужно!
Как на счет условия?


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 01 октября 2008, 12:01:20
По-поводу файла в кэше: когда это .html?, то он его начинает обновлять, что не нужно!

HTML тоже может быть полезной частью сайта! Тем более, что раз это уже есть в кэше, то значит раньше уже пригодилось и Черный список его не тронул.
А реклама обычно грузится каждый раз под разными ссылками, поэтому в кэше ее второй раз редко встретишь.

Цитировать
Как на счет условия?

Ты про исключения для cвоего скрипта? Это только начало, дополнять его придется еще не раз...
!#^http://ima?ge?s?\.[^/]+\.(com|ru|info|net|ua)


Название: Re: Скрипты Lua в HandyCache
Отправлено: zed от 02 октября 2008, 13:11:42
а можно как-то настроить, чтоб скрипты отключались/включались по горячей клавише, как это со списками сделано?


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 02 октября 2008, 14:13:26
чтоб скрипты отключались/включались по горячей клавише, как это со списками сделано?

Можно назначить горячую клавишу для отключения всего списка "Серверов-посредников" вместе со всеми скриптами. Отключить только какой-то отдельный скрипт клавишей нельзя.


Название: Re: Скрипты Lua в HandyCache
Отправлено: zed от 02 октября 2008, 14:22:52
Имеется в виду опция: "Временно отменить клавишей:"? Если да, то это не то, т.к. там жестко-заданные сочетания, а нужно назначить, скажем на F10 включение/отключение "Серверов-посредников" вместе со всеми скриптами.
 


Название: Re: Скрипты Lua в HandyCache
Отправлено: 4water от 03 октября 2008, 01:03:41
из документации
Цитировать
После выполнения последнего скрипта НС передает измененные заголовки, выполняет действие hc_action, применяет маску Белого списка hc_white_mask или ограничивает скорость закачки в соответствие с hc_file_speed_limit или hc_user_speed_limit.
у меня hc_action=dont_update и оно не исполняется
хоть в мониторе пишется об этом но срабатывает черный список и выполняется блокировка


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 03 октября 2008, 11:11:44
у меня hc_action=dont_update и оно не исполняется

Ну, во-первых, нет hc_action=dont_update , а hc_action="dont_update".

Цитировать
хоть в мониторе пишется об этом но срабатывает черный список и выполняется блокировка

Да, так сделано специально. Если тебе не надо после скрипта проверять другие списки, то укажи это в hc_white_mask.


Название: Re: Скрипты Lua в HandyCache
Отправлено: 4water от 03 октября 2008, 11:37:04
Цитировать
Ну, во-первых, нет hc_action=dont_update , а hc_action="dont_update".
это мог и не писать ведь пишу же что надпись о срабатывании в мониторе есть значит в скрипте все правильно
а здесь просто для понимания ситуации
Цитировать
Да, так сделано специально. Если тебе не надо после скрипта проверять другие списки, то укажи это в hc_white_mask.
понятно
попробовал получилось так даже лучше ведь на самом деле лучше чтобы список черный все равно сработал
надо указанный цитат в документации дополнить чтобы сразу это было явно
вот только еще не нужна запись в мониторе что работает действие dont_update ведь на самом деле оно не работает


Название: Re: Скрипты Lua в HandyCache
Отправлено: 4water от 03 октября 2008, 22:06:43
еще хочется удобства если ошибка при компиляции в скрипте- сейчас скрипт молча не работает а хочется увидеть от НС сообщение


Название: Re: Скрипты Lua в HandyCache
Отправлено: Wil от 16 октября 2008, 13:13:25
использую dont_update_file_by_size.lua вместо списка не обновлять
строки монитора:

16.10.2008/13:00:45 local/127.0.0.1 http://r1.mail.ru/b5694597.jpg 2656 2656/370 100% 788 "200 From cache (HC)" П.51, Lua, Dont update from script
П.51 (Преобразование URL): ^[^/]+\.([^/]+\.[^/]+)/ 
Lua 
Dont update from script

16.10.2008/13:09:59 local/127.0.0.1 http://img.mail.ru/mail/ru/images/rabota-all.gif 550 550/199 100% 1036 "200 From cache (HC)" П.51, Lua
П.51 (Преобразование URL): ^[^/]+\.([^/]+\.[^/]+)/ 
Lua

файл во втором случае берется всеже из кеша или из нета, Dont update from script не пишет,хотя  "200 From cache (HC)" есть


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 16 октября 2008, 15:24:01
файл во втором случае берется всеже из кеша или из нета, Dont update from script не пишет,хотя  "200 From cache (HC)" есть

Тут возможны 2 варианта:
1. Сервер сам отвечает, что файл не изменился ("304 Not Modified"), тогда HC отдает файл из своего кэша.
2. Сервер шлет файл размером до 1000 байт, который как правило умещается в один пакет вместе с заголовками, поэтому скрипт не мешает загрузить этот файл из интернета, т.к. он все равно уже весь получен.


Название: Re: Скрипты Lua в HandyCache
Отправлено: Valeri614 от 20 октября 2008, 19:44:50
_block_external_links.lua весьма полезен и хорош. Есть только некоторое ..неудобство. Не силён в терминах, но попробую на пальцах. Если уж я жму на ссылку, то я сознательно хочу по ней перейти, а _block_external_links.lua блокирует переход по ней. Конечно использую горячие клавиши, но иногда забываю или по виду ссылки непонятно, что она ведёт за пределы домена(скрыта под тегом или что-то в этом роде) приходится возвращаться, давить горячую клавишу и т.д., т.е. делать кучу лишних телодвижений. Как бы сделать, чтоб _block_external_links.lua не срабатывал, если я сознательно кликаю на ссылку?


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 20 октября 2008, 21:23:24
Как бы сделать, чтоб _block_external_links.lua не срабатывал, если я сознательно кликаю на ссылку?

Как отличить "сознательный" клик по ссылке от "бессознательного"? Они ничем не отличаются.
 
Например, в Макстоне при клике по ссылке средней кнопкой мыши в запрос не включается реферер и скрипт такой запрос без проблем пропускает.
В Опере я не нашел подобной фичи. Там можно совсем отключить рефереры для всех запросов, но как сделать это только для "сознательных" кликов? В FireFox тоже не знаю, есть такая фича или нет...


Название: Re: Скрипты Lua в HandyCache
Отправлено: Dan Claimant от 24 октября 2008, 10:54:27
простите, если я где-то это упустил...
буквально несколько сайтов есть, которые не нужно обрабатывать скриптом... куда адреса этих сайтов можно вписать, чтобы скрипт их пропускал?


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 24 октября 2008, 11:46:49
В luaR.lst или Lua.lst перед скриптом в виде:

!site1.ru/
!site2.ru/



Название: Re: Скрипты Lua в HandyCache
Отправлено: Dan Claimant от 24 октября 2008, 12:07:19
В luaR.lst или Lua.lst перед скриптом в виде:

!site1.ru/
!site2.ru/


то есть, например:
!mail.google.com/
так?

добавлено:
огромное спасибо :) работает...

очень хороший скрипт, всем рекомендую :) рекламу режет на "ура"...


Название: Re: Скрипты Lua в HandyCache
Отправлено: zed от 26 октября 2008, 21:48:41
Подскажите, если не сложно, пример скрипта, который из модуля MY.DLL вызывает функцию my_F1, которой в качестве параметра передаётся строка с URL-запросом. Результатом работы my_F1 будет строка - путь к файлу, который нужно отдать клиенту.

 


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 26 октября 2008, 22:19:56
Я не пробовал вызывать из Lua функции, находящиеся в dll. Могу посоветовать посмотреть сайт http://ilovelua.narod.ru/
Он на русском языке и там, кажется, есть что-то по твоему вопросу.


Название: Re: Скрипты Lua в HandyCache
Отправлено: zed от 26 октября 2008, 22:58:00
Похоже, что вот это: http://ilovelua.narod.ru/step3.html относится к теме dll.
И похоже, что dll должна иметь строго определённую структуру, чтоб она могла работать в LUA. В статье описан пример для С++, но вот незадача... я пишу на Delphi, помогите разобраться? Примитивного примера исходников dll + lua скрипт, мне бы очень помогли. 


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 27 октября 2008, 15:48:51
zed
Держи пример http://handycache.ru/download/DllforLua.zip


Название: Re: Скрипты Lua в HandyCache
Отправлено: zed от 27 октября 2008, 19:08:56
zed
Держи пример http://handycache.ru/download/DllforLua.zip
Огромное спасибо.


Название: Re: Скрипты Lua в HandyCache
Отправлено: zed от 27 октября 2008, 20:46:57
Ага, что-то не выходит...
Положил скрипт test.lua и модуль test.dll в папку lua (ко всем скриптам до кучи)
Создал luaTest.lst и подключил туда test.lua
Код:
#.  <script=lua\test.lua>
В HC создал соответствующий сервер-посредник: #5#~#True#~#luaTest#~#script://lua/request#~#luaTest.lst#~#.*
Содержание test.lua:
Код:
require 'test'

function e1()
  hc_answer_header=
  'HTTP/1.1 200 OK\13\10'..
  'Server: Lua-script\13\10'..
  'Content-Type: text/html\13\10'..
  'Connection: close\13\10\13\10'

  x='Script_is_work'

  hc_answer_body=x
end


function main()
e1()
end
И вот этот скрипт не работает из-за строчки require 'test', если её закомментировать, то всё работает. А эта, строка загружает dll... в чём может быть загвоздка?


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 27 октября 2008, 21:36:19
Lua не находит test.dll в папке \lua (как ты думаешь откуда бы Lua знал, что модуль надо искать там?). Положи test.dll рядом с НС.


Название: Re: Скрипты Lua в HandyCache
Отправлено: zed от 27 октября 2008, 21:37:52
не помогает, и там и там лежит...
Помогло только явное указание пути к модулю, т.е. в начало test.lua добавил:
Код:
package.path ='x:\HandyCache\test.dll'
только тогда сработал...


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 27 октября 2008, 22:13:07
Ну заработало и слава Богу.
Я проверял пример на своей программке LuaTest. Пример у меня работал, когда я test.dll положил рядом с программой.


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 27 октября 2008, 22:20:20
Помогло только явное указание пути к модулю, т.е. в начало test.lua добавил:
Код:
package.path ='x:\HandyCache\test.dll'
только тогда сработал...

Сомневаюсь, что помогло именно это. Твои одиночные '\' скрипт воспринимает за эскейп-последовательности, поэтому твой путь ведет в никуда!


Название: Re: Скрипты Lua в HandyCache
Отправлено: zed от 27 октября 2008, 22:25:47
двойные '\\' не срабатывают...
и ещё, как по завершении скрипта выгрузить эту dll?


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 27 октября 2008, 23:41:39
После работы скриптов объект, работающий с Lua разрушается. Я думаю при этом и dll выгрузится. А если не выгрузится, так еще лучше. При следующем использовании не придется снова грузить.


Название: Re: Скрипты Lua в HandyCache
Отправлено: zed от 28 октября 2008, 00:12:05
Если скрипт с dll сработал хоть раз и dll загрузилась, то выгрузка из памяти происходит только после закрытия самого HC!
Согласен, что это, в принципе, удобнее... и по-идее, должно экономить ресурсы.
Вот только небыло бы утечки памяти? А то ведь при каждом последующем срабатывании скрипта может загружаться ещё одна копия той dll?


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 28 октября 2008, 00:43:37
Цитировать
Вот только небыло бы утечки памяти? А то ведь при каждом последующем срабатывании скрипта может загружаться ещё одна копия той dll?
Не думаю, что это возможно.
Проверь на LuaTest после многократных вызовов скрипта занимаемая память растет или нет? (в самом НС много потоков и их количество меняется, это может исказить картину).


Название: Re: Скрипты Lua в HandyCache
Отправлено: zed от 28 октября 2008, 11:16:43
Так, проверил: в LuaTest, dll как раз таки выгружается из памяти после срабатывания скрипта, так что там с утечкой всё в порядке.
В HC: взял несуществующую ссылку, настроил скрипт только на этот URL, отключил скрипт, в Опере обновляю много-много раз подряд стриницу с той ссылкой - память, занимаемая HC растёт незначительно (за 10 обновлений возросла на 4 кБ - и то, скачком). Теперь подключил скрипт (но отключил в нём загрузку dll) - память стала расти быстрее (в ОЗУ на 24 - 28 кБ за одно обновление и на столько же увеличивается занимаемая виртуальная память). И наконец, разрешаю в скрипте загрузку dll - память растёт ТАК ЖЕ как и с простым скриптом (~ на 28 кБ в озу и в вирт.).
Отсюда вывод - утечка есть, но она не связана с dll.


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 28 октября 2008, 12:51:09
zed
Цитировать
Отсюда вывод - утечка есть
Я бы не стал торопиться с такими выводами. Управление динамической памятью в Delphi и Windows устроено сложнее чем может быть ожидается. Однажды выделенная память не обязательно сразу после ее освобождения программой пополняет свободную память системы. Нужно подождать хотя бы пол часа и тогда посмотреть вернется ли занимаемая программой память к исходному значению.


Название: Re: Скрипты Lua в HandyCache
Отправлено: zed от 28 октября 2008, 13:24:49
Да, через некоторое время, после остановки обновления страницы оперативка освободилась (запустил обновление страницы раз в секунду, и оставил на полчаса/час - HC стал занимать ~ 150 МБ оперативки и столько же подкачки), а подкачка так и не освободилась. Выходит, если будет постоянная и слишком активная работа скриптов, может out of memory выскочить, и HC откажется работать? 


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 28 октября 2008, 13:39:25
Подожди еще, файл подкачки тоже освободится.
Цитировать
Выходит, если будет постоянная и слишком активная работа скриптов, может out of memory выскочить, и HC откажется работать? 
А ты проверял разницу потребления памяти в долгосрочной перспективе в зависимости от использования скриптов? Я не проверял, но думаю, что разница не должна быть большой.


Название: Re: Скрипты Lua в HandyCache
Отправлено: natan от 29 октября 2008, 11:19:57
не сохраняет в кеш
страница все полностью загружена и корректно видится

вот строка
29.10.2008/10:33:57 local/127.0.0.1 http://www.computer-museum.ru/histussr/0.htm 3347 3347/257 100% 440 "404 Not Found gzip"

или

29.10.2008/10:43:04 local/127.0.0.1 http://www.computer-museum.ru/histussr/13-7.htm 5025 5025/257 100% 385 "404 Not Found gzip"

или

29.10.2008/10:50:19 local/127.0.0.1 http://www.computer-museum.ru/precomp/pol_bab.htm 20954 20954/257 100% 405 "404 Not Found gzip"

.* запись в кеш - включено

HandyCache RC2 1.0.0.103 UNSTABLE

что делать?


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 29 октября 2008, 12:21:53
Ответы сервера "404 Not Found" по умолчанию HC в кэш не сохраняет. Чтобы сохранял, надо использовать скрипт save_404.lua . Этот скрипт для версии 1.0.0.103 можно взять здесь (http://handycache.ru/component/option,com_smf/Itemid,10/topic,1120.msg14256/#msg14256).
В Lua.lst надо добавить строку:
Код:
http://www.computer-museum.ru/  <script=lua\save_404.lua>


Название: Re: Скрипты Lua в HandyCache
Отправлено: zed от 31 октября 2008, 18:13:01
не помогает, и там и там лежит...
Помогло только явное указание пути к модулю, т.е. в начало test.lua добавил:
Код:
package.path ='x:\HandyCache\test.dll'
только тогда сработал...

Вот как нужно указывать путь к dll:
Код:
package.path ='.\.\test.dll'


Название: Re: Скрипты Lua в HandyCache
Отправлено: anis от 07 ноября 2008, 18:16:41
скажите как вместо пустого экрана блокировки получить, кокуюто надпись что было блокировано например на форумах часто вставляют видео из youtube но понять что она там есть можно только посмотрев в монитор

лог из монитора
07.11.2008/17:12:46 local/127.0.0.1 http://www.youtube.com/v/RV3scFz7zxw 0 0/151 0 0 "403 Forbidden (HC)" LuaR, Lua, Stop from R-script
LuaR 
Lua 
Stop from R-script


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 07 ноября 2008, 22:11:57
В шапке "Черного списка" настрой опцию "Показывать файл". Это может быть картинка или HTML. Тогда HC при блокировке будет выдавать браузеру указанный тобой файл.


Название: Re: Скрипты Lua в HandyCache
Отправлено: 4e4ako от 09 ноября 2008, 19:03:43
всем привет.

вопрос такой.
можно ли с помощью Lua скриптов заставить НС ходить через php-проксик..
к примеру как http://anonymouse.org/anonwww.html

собственно для чего?
локальная скорость высокая, а интернета нет..
пров предоставляет хостинг с жирным каналом ;)
мы берем хостинг, ставим php-proxy и радуемся жизни...

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


поделитесь скриптиком или примерчик накидайте, если возможно ))
заранее благодарен.


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 09 ноября 2008, 19:26:11
можно ли с помощью Lua скриптов заставить НС ходить через php-проксик..

И без скриптов можно. Читай в Документации (http://handycache.ru/content/view/8/5/1/1/) про "Серверы-посредники".


Название: Re: Скрипты Lua в HandyCache
Отправлено: 4e4ako от 09 ноября 2008, 20:38:05
И без скриптов можно. Читай в Документации (http://handycache.ru/content/view/8/5/1/1/) про "Серверы-посредники".

эм.. попробовал - хреново че то пашет..
там base64 encoding в большинстве случаев стоит - а НС выдает им обычные адреса..
то картинки не отображаются - то кучу ошибок в индексе выстреливает...

может кто посоветует пхп проксю хорошую(и желательно бесплатную) под это дело?


Название: Re: Скрипты Lua в HandyCache
Отправлено: Fernand от 16 ноября 2008, 20:29:25
Есть ли возможность в работе скрипта задать обработку запроса клиента на манер privoxy - удаление из заголовка refer и тому подобных данных? Если да - подскажите реализацию..


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 16 ноября 2008, 22:08:18
удаление из заголовка refer и тому подобных данных

Можно:
Код:
-- Скрипт для HandyCache v 1.00 RC2 (1.0.0.103)

function main()
  x, n = string.gsub(hc_header, "[Rr]eferer:[^\n]*\n", "", 1)
  if n>0 then
    hc_header = x
    hc_header_replace = true
  end
end


Название: Re: Скрипты Lua в HandyCache
Отправлено: Fernand от 16 ноября 2008, 23:20:16
DenZzz, вписывается в luaR?
Спасибо.

upd.
http://www.stilllistener.addr.com/checkpoint1/index.shtml
 (http://img239.imagevenue.com/loc128/th_69091_17.11.2008__6.52.24_122_128lo.jpg) (http://img239.imagevenue.com/img.php?image=69091_17.11.2008__6.52.24_122_128lo.jpg)
Фокус не удался. :(


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 17 ноября 2008, 14:06:26
DenZzz, вписывается в luaR?

Нет. Вписывается в отдельный файл с именем, например: _delete_referer.lua . Этот файл кладется в папку Lua. А в LuaR.lst уже вписывается строка: #.  <script=lua\_delete_referer.lua>
P.S. Читай эту тему и Документацию - все это уже не раз было подробно разжевано!  :rtfm:


Название: Re: Скрипты Lua в HandyCache
Отправлено: Fernand от 18 ноября 2008, 01:22:26
DenZzz, не надо раздраженно махать мануалом - именно это я и имел ввиду.
а фокус реально не удался, хотя при заходе на http://torcheck.xenobite.eu/ показывает отсутствие рефера


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 18 ноября 2008, 11:50:16
а фокус реально не удался

Как в старой поговорке: "Факир был пьян, и фокус не удался."  :D

У меня скрипт работает! Проверь, что в Серверах-посредниках у тебя стоят все галки "Разрешить". Их должно быть, как минимум, три: у самого списка и в строках LuaR и Lua.
В мониторе HC 1.0.0.103 при срабатывании скрипта должно быть написано так:

Цитировать
18.11.2008/12:37:12 local/127.0.0.1 http://www.stilllistener.addr.com/checkpoint1/index.shtml 0 10237/326 0 284 "200 OK" LuaR, Lua, Header replace from R-script, З.1

Это означает, что заголовок запроса был изменен скриптом.


Название: Re: Скрипты Lua в HandyCache
Отправлено: Fernand от 18 ноября 2008, 14:47:06
DenZzz, я дико извиняюсь :) Все что нужно было разумеется проставлено.
Все работает - там я протупил и кэш не снес.
Спасибо за скрипт.
Но! Попробуй пройти на http://leader.ru/secure/who.html.. :(
Хотя там и privoxy не пляшет.
зы. java у меня блокирована фаерволом.
 (http://img209.imagevenue.com/loc401/th_08662_18.11.2008__21.36.38_122_401lo.jpg) (http://img209.imagevenue.com/img.php?image=08662_18.11.2008__21.36.38_122_401lo.jpg)  (http://img213.imagevenue.com/loc399/th_08664_18.11.2008__21.39.15_122_399lo.jpg) (http://img213.imagevenue.com/img.php?image=08664_18.11.2008__21.39.15_122_399lo.jpg)


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 18 ноября 2008, 23:48:26
Но! Попробуй пройти на http://leader.ru/secure/who.html..

Надпись: "You're here by the link from : ...", которую ты видишь на экране, формирует JavaScript в браузере твоего компьютера. Внешнему серверу ничего об этом не известно! Отключи в настройках браузера выполнение Java-скриптов и вместо реферера увидишь только строку: "JavaScript : disabled".

Цитировать
зы. java у меня блокирована фаерволом.

Не знаю, что у тебя там блокировано фаером, но явно не то!
Есть Java-апплеты, а есть Java-скрипты. Это разные вещи и отключаются они в браузере разными галками!


Название: Re: Скрипты Lua в HandyCache
Отправлено: Fernand от 19 ноября 2008, 15:22:02
DenZzz
еще вопрос - при применении скрипта в мониторе программы отсутствует структура (дерево) ссылок. Неудобно. Это можно преодолеть?


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 19 ноября 2008, 18:54:53
Fernand

Нет. Дерево в мониторе группируется по рефереру. Нет реферера - нет группировки.

А зачем, вообще, ты скрываешь реферер от внешнего сервера? Чем он тебе помешал?


Название: Re: Скрипты Lua в HandyCache
Отправлено: Дем от 19 ноября 2008, 23:01:38
Ну вот например народ.ру с неправильным реферером картинки не отдаёт


Название: Re: Скрипты Lua в HandyCache
Отправлено: Fernand от 20 ноября 2008, 01:30:06
Чем он тебе помешал?
Мне в общем-то и банеры не мешают.. Однакож - не хочу. :)
Я хочу отдавать только те данные, что могу контролировать.


Название: Re: Скрипты Lua в HandyCache
Отправлено: sartas от 01 декабря 2008, 10:26:46
Помогите написать скрипт.
Ограничение входящего трафика, у каждого пользователя нужно задать свой лимит входящего трафика в день.
Чую что это можно сделать через hc_user_from_internet, но у меня что-то неполучается.


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 01 декабря 2008, 10:48:39
у каждого пользователя нужно задать свой лимит входящего трафика в день.

См. ниже...


Название: Re: Скрипты Lua в HandyCache
Отправлено: Cron от 02 декабря 2008, 02:55:17
Помогите, пожалуйста, написать следующий скрипт (если это возможно сделать):
Сразу после загрузки URL "http://A=id" происходит загрузка URL "http://B". В данном случае A, B - некоторые известные и постоянные строки. А вот id - некоторая меняющаяся строка. После id в первом URL ничего больше нет.
Хотелось бы, чтобы HandyCache кэшировал второй URL "http://B" в файл "B=id" (id брал каким то образом из предыдущего URL "http://A=id") (а не просто "B", как он делает по умолчанию), и при обращении к "http://A=id" => и последующем вызове "http://B", из кэша доставался бы файл "B=id"(если такой имеется в наличие, иначе - загрузка из Интернета).
 
Буду признателен за помощь!


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 02 декабря 2008, 10:31:54
Cron

Так сделать нельзя.


Название: Re: Скрипты Lua в HandyCache
Отправлено: Enver от 05 декабря 2008, 03:23:33
Это пример блокировки файлов по content-type. скажите можно ли оптимизировать/сократить строку "if type ==...." при большом кол-ве контент-тайпов?

Код:
function GetContentType(s)
  _,_,x = string.find(s, "[cC]ontent%-[tT]ype: *([^;\r\n]+)")
  if x~=nil then x = string.lower(x) end
  return x
end

function main()

    type = GetContentType(hc_header)

    if type == "text/html" or type == "image/gif" or type == "image/jpg" or type == "image/png" then
hc_action = "stop"
end
end


Название: Re: Скрипты Lua в HandyCache
Отправлено: Михаил от 05 декабря 2008, 11:08:21
Цитировать
можно ли оптимизировать/сократить строку "if type ==...." при большом кол-ве контент-тайпов?
Имеется в виду, можно ли использовать шаблоны?
Можно, например, так:
Цитировать
if type == 'text/html' or type:find('image/') then
Захватим html и любые рисунки.


Название: Re: Скрипты Lua в HandyCache
Отправлено: Enver от 06 декабря 2008, 09:45:46
Ну первое имеется ввиду увеличить скорость выполнения, т.е. не будет ли такой скрипт тормозить если записей content type будет много

И второе - укоротить сами записи, т.е. использовать regex к примеру (и опять таки это на скорость не повлияет?)


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 07 декабря 2008, 11:56:15
Ну первое имеется ввиду увеличить скорость выполнения, т.е. не будет ли такой скрипт тормозить если записей content type будет много

Насколько много? Тысячи? Миллионы?
Одна проверка условия if type == "text/html" длится долю микросекунды (0,00000025 сек на P4 2800 МГц)...

Цитировать
И второе - укоротить сами записи, т.е. использовать regex к примеру (и опять таки это на скорость не повлияет?)

Не существенно.


Название: Re: Скрипты Lua в HandyCache
Отправлено: Enver от 07 декабря 2008, 12:17:54
Спасибо, успокоили :)

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


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 07 декабря 2008, 20:21:56
как нибудь посмотреть изначальный можно?

Ты имеешь в виду только заголовки или само тело?

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


Название: Re: Скрипты Lua в HandyCache
Отправлено: Enver от 07 декабря 2008, 21:23:10
Имею ввиду именно заголовки. Т.е. изначальный http-ответ, который получил HC, а не тот что он отдал браузеру. А тело...оно же на то и заблокировано чтобы его у нас не было.
Вобщем ждём следующую версию...


Название: Re: Скрипты Lua в HandyCache
Отправлено: Counie от 09 декабря 2008, 12:14:42
Кто пользуется Оперой, знает о замечательном средстве Notes (Заметки).
Мне часто приходится создавать одни и те же тематические папки и для закладок (bookmarks) и для Notes (заметок). Я в последнее время файл opera.adr переправил в notes.adr и пользуюсь заметками как закладками.
Всё бы хорошо, но если для названия закладок Opera берет тэг <title> из страницы, помещаемой в закладки, то для заметки - meta tag description.
1. Например, откройте адрес nigma.ru, перетащите вкладку на панель заметок: получим заметку "nigma.ru/".
2. ...а потом на панель закладок:получим закладку "NIGMA - интеллектуальная поисковая система".

Видите, как с закладками красивше получается ?

Мне нужен фильтр, который бы добавлял meta tag description равный тэгу <title> в открытую страницу, если этот тэг description отсутствует.

Может ли это сделать LUA script ??


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 09 декабря 2008, 13:26:52
Мне нужен фильтр, который бы добавлял meta tag description равный тэгу <title> в открытую страницу, если этот тэг description отсутствует.

Может ли это сделать LUA script ??

Пока нет, но в следующей версии планируется прикрутить обработку HTML скриптами.


Название: Re: Скрипты Lua в HandyCache
Отправлено: sk! от 12 декабря 2008, 15:48:31
А возможно ли организовать так чтоб ограничение на посещение определённые URL были только например в рабочии дни а в определённое время для некоторых пользователей?


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 12 декабря 2008, 16:17:03
Цитировать
А возможно ли организовать так чтоб ограничение на посещение определённые URL были только например в рабочии дни а в определённое время для некоторых пользователей?
Возможно.
Что нужно сделать для начала использования скриптов написано здесь http://handycache.ru/content/view/8/5/1/5/
Для определения от какого пользователя пришел запрос нужно использовать  переменную hc_user_name.
Чтобы узнать текущую дату и время нужно использовать функции os.date и os.time. Как ими пользоваться написано, например, здесь http://www.lua.ru/doc/5.8.html#pdf-os.date


Название: Re: Скрипты Lua в HandyCache
Отправлено: 4e4ako от 23 декабря 2008, 12:26:19
писал в соседнюю тему, но как то потерялся мой маленький вопросец среди огромных логов.

вообщем повторюсь в этой ветке.

в луа-скриптах прописана cgi -прокся (http://mysite.ru/nph-proxy.cgi/000000A/http/).

какое правило прописать в "условии", чтобы через эту проксю грузились только файлы определенных типов (rar|zip|mp3). пример ссылки запроса файла - http://handycache.ru/component/option,com_remository/Itemid,2/func,download/id,7/chk,3208ba732c675ce024509fcaa288aa89/no_html,1/fname,HandyCache098b1exe.zip


Название: Re: Скрипты Lua в HandyCache
Отправлено: Михаил от 23 декабря 2008, 13:59:31
Цитировать
в луа-скриптах прописана cgi -прокся
Наверное, в "Серверах-посредниках"?
Цитировать
какое правило прописать в "условии", чтобы через эту проксю грузились только файлы определенных типов (rar|zip|mp3)
Можно попробовать
\.(rar|zip|mp3)$


Название: Re: Скрипты Lua в HandyCache
Отправлено: 4e4ako от 23 декабря 2008, 14:19:12
Цитировать
в луа-скриптах прописана cgi -прокся
Наверное, в "Серверах-посредниках"?
Цитировать
какое правило прописать в "условии", чтобы через эту проксю грузились только файлы определенных типов (rar|zip|mp3)
Можно попробовать
\.(rar|zip|mp3)$

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

когда смотришь лог - все хОКкей ))


Название: Re: Скрипты Lua в HandyCache
Отправлено: AAB от 25 декабря 2008, 14:10:11
Привет main62 и DenZzz !!!
я вот написал скрипт ограничения скорости пользователей  по истечению интернет лимита. хочу просто узнать работает ли.
if hc_user_name == 'x' and hc_user_from_internet > 10485760 then
  hc_user_speed_limit=2048
 end
И ещё! Куда посметить в lua или luaR. :help:
Жду ответа.
Заранее  большое Спасибо!!!


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 25 декабря 2008, 17:28:46
Цитировать
я вот написал скрипт ограничения скорости пользователей  по истечению интернет лимита. хочу просто узнать работает ли.
Сделай лимит поменьше, чтобы быстрее исчерпался и проверь.
Цитировать
Куда посметить в lua или luaR
В luaR.


Название: Re: Скрипты Lua в HandyCache
Отправлено: AAB от 26 декабря 2008, 10:19:48
привет всем! помогите, пожалуйста создать скрипт:
1. для ограничения только определенных пользователей посещения определенных сайтов. например, сайты с адресом *soft*.* (где встречается soft) и т.п.
2. для ограничения определенных пользователей скачивания больших файлов определенного формата в определенное время.
если это возможно.или это все можно сделать в настройках. подскажите как и где это можно посмотреть.
заранее большое спасибо.
буду ждать ответа.


Название: Re: Скрипты Lua в HandyCache
Отправлено: anarkidron от 27 декабря 2008, 03:25:03
Цитировать
хочу просто узнать работает ли.
if hc_user_name == 'x' and hc_user_from_internet > 10485760 then
  hc_user_speed_limit=2048
 end

Обладает ли верным значение переменная hc_user_from_internet при отключенной статистике?


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 27 декабря 2008, 12:25:30
Цитировать
Обладает ли верным значение переменная hc_user_from_internet при отключенной статистике?
Не обладает. Значения в скрипт берутся из таблицы статистики.


Название: Re: Скрипты Lua в HandyCache
Отправлено: AAB от 29 декабря 2008, 14:15:05
Всем привет и с наступающим... :)
Спасибо большое за ответ на первый вопрос. Оказывается скрипт работает.
А как на счет второго вопроса. помогите пожалуйста. :help:
Заранее больше спасибо. :thanks:


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 30 декабря 2008, 20:28:12
2. для ограничения определенных пользователей скачивания больших файлов определенного формата в определенное время.

Это можно сделать скриптом. Примеры практического решения подобных задач смотри выше в этой теме...


Название: Re: Скрипты Lua в HandyCache
Отправлено: AAB от 01 января 2009, 10:44:03
Это можно сделать скриптом. Примеры практического решения подобных задач смотри выше в этой теме...

Спасибо за подсказку. Но если можно, то подскажите подробнее как ограничить определенных пользователей скачивания больших файлов определенного формата в определенное время.
И ещё
Помогите, пожалуйста создать скрипт:
2. для ограничения определенных пользователей скачивания больших файлов определенного формата в определенное время.
если это возможно.или это все можно сделать в настройках. подскажите как и где это можно посмотреть.
заранее большое спасибо.


 


Название: Re: Скрипты Lua в HandyCache
Отправлено: Влад22 от 04 января 2009, 09:44:01
Уважаемые знатоки! Можно ли сделать так, что бы при обработке определенных запросов через Lua-скрипты подавался звуковой сигнал? Ну очень нужно...  :help:

Например так:
если url = "site.ru" и размер >1000 байт
то подать звуковой сигнал


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 05 января 2009, 13:49:59
Скрипты Lua могут запускать программы с помощью функции os.execute. Если найти программку, которая умеет проигрывать звуковые файлы, то можно организовать то, что ты хочешь.


Название: Re: Скрипты Lua в HandyCache
Отправлено: Влад22 от 05 января 2009, 23:46:21
Скрипты Lua могут запускать программы с помощью функции os.execute. Если найти программку, которая умеет проигрывать звуковые файлы, то можно организовать то, что ты хочешь.

Уважаемый, если не трудно, приведите пример скрипта с вызовом проги например "play.exe" и эвуком например "ring.wav", буду пробовать


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 06 января 2009, 00:56:59
Скачать программу http://forums.eccomagic.com/forum/Attachments/emSpawn.exe_file и поместить ее в папку НС (убрать _file в конце имени файла). Для вызова блокнота в скрипт добавить строку
os.execute([["emSpawn.exe /! notepad.exe"]])
Программа emSpawn нужна, чтобы скрипт не дожидался окончания работы вызванной программы.


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 06 января 2009, 15:50:55
1. для ограничения только определенных пользователей посещения определенных сайтов. например, сайты с адресом *soft*.* (где встречается soft) и т.п.

В luaR.lst вставляешь строку типа:
#soft  <script=lua\_block_urls_for_users.lua>

Создаешь новый файл с именем _block_urls_for_users.lua и кладешь его в папку lua.
В файл копируешь код скрипта:
Код:
-- Скрипт для HandyCache v1.00 RC2 (1.0.0.103)
function main()
 if hc_user_name == 'Sergey' or hc_user_name == 'Anna' then
  hc_action = 'stop'
 end
end

Имена пользователей правишь в соответствие со своим списком Доступа.



2. для ограничения определенных пользователей скачивания больших файлов определенного формата в определенное время.

В lua.lst вставляешь строку типа:
#\.(avi|exe|mp3|rar|zip)(\?|$)  <script=lua\block_big_files_for_users.lua>
другие расширения больших форматов добавляешь по вкусу.

Создаешь новый файл с именем block_big_files_for_users.lua и кладешь его в папку lua.
В файл копируешь код скрипта:
Код:
-- Скрипт v2 для HandyCache v1.00 RC2 (1.0.0.103)

function GetContentLength(s)
  _,_,x = string.find(s, "[cC]ontent%-[lL]ength: *(%d+)")
  if x==nil then return -1 else return tonumber(x) end
end

function main()

 time = os.date("*t")
 len = GetContentLength(hc_header)

 if (hc_user_name == 'Sergey' or hc_user_name == 'Anna') and
  len > 300000 and
  (time.hour >= 18 and time.hour < 22) then
    hc_action = 'stop'
 end

end

Имена пользователей правишь в соответствие со своим списком Доступа. Предельный размер больших файлов (в примере > 300000 байт) и время работы блокировки (в примере с 18 до 22 часов) выставляешь по вкусу.


Название: Re: Скрипты Lua в HandyCache
Отправлено: AAB от 09 января 2009, 09:34:02
Спасибо большое DenZzz за помощь! :good:
Будем пробовать. :oops:


Название: Re: Скрипты Lua в HandyCache
Отправлено: mebrc от 19 января 2009, 15:35:41
Здравствуйте, помогите пожалуйста написать скрипт, запрещающий открывать сайты однокласники.ру и в контакте.ру всем юзерам, кроме одного. Короче, шефу можно, всем остальным нет. Заранее спасибо.


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 21 января 2009, 12:19:28
скрипт, запрещающий открывать сайты однокласники.ру и в контакте.ру всем юзерам, кроме одного. Короче, шефу можно, всем остальным нет.

В luaR.lst добавь строку:   
+odnoklassniki.ru|vkontakte.ru  <script=lua\_block_for_users.lua>

В папке Lua создай файл _block_for_users.lua с таким содержимым:

Код:
-- Скрипт для HandyCache v1.00 RC2 (1.0.0.103)
function main()
 hc_action = 'stop'
 if hc_user_name == 'Boss' then
  hc_action = ''
 end
end


Название: Re: Скрипты Lua в HandyCache
Отправлено: zed от 21 января 2009, 22:00:23
Ещё - есть такая штука, как LuaSQL (http://www.keplerproject.org/luasql/)

LuaSQL is a simple interface from Lua to a DBMS. It enables a Lua program to:

    * Connect to ODBC, ADO, Oracle, MySQL, SQLite and PostgreSQL databases;
    * Execute arbitrary SQL statements;
    * Retrieve results in a row-by-row cursor fashion.

LuaSQL is free software and uses the same license as Lua 5.1.

Цитировать
Ещё - есть такая штука, как LuaSQL
Есть. А еще мне запомнились сокеты для lua и возможность формирования/показа из lua окошек с контролами.
Хотелось бы увидеть развитие HC по данному направлению...


Название: Re: Скрипты Lua в HandyCache
Отправлено: divinets от 31 января 2009, 22:27:28
Подскажите как сделать?
У меня реализовано через скрипты ограничение размера файла в зависимости от времени block_long_file_by_time.lua
Как можно поставить один сайт (www.divinets.ru) в исключение для этого скрипта?


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 01 февраля 2009, 23:25:39
Как можно поставить один сайт (www.divinets.ru) в исключение для этого скрипта?

Вставь в lua.lst соответствующее исключение: !divinets.ru
Подробности в Документации...


Название: Re: Скрипты Lua в HandyCache
Отправлено: divinets от 02 февраля 2009, 22:13:32
У меня в луа:
#.* <script=lua\block_long_file_by_time.lua>
работает для всех сайтов.

Пробовал:
#!divinets.ru <script=lua\block_long_file_by_time.lua>
не работает (вообще не срабатывает, на любом сайте, в том числе и на divinets.ru)


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 03 февраля 2009, 12:06:39
Не правильно сделал! Вместо той строки вставь 3 таких:

!divinets.ru
#.* <script=lua\block_long_file_by_time.lua>
<new_block>


Название: Re: Скрипты Lua в HandyCache
Отправлено: Kserg от 06 февраля 2009, 23:36:54
Исходные данные - HandyCache 1.0.0.64a
Настроен сервер-посредник
#5#~#True#~#lua2#~#script://lua/request#~#luaR.lst#~#.*

Содержимое файла luaR.lst :
Код:
; lua list
!#^http://192\.168\.\d+\.
#.  <script=lua\_delete_referer.lua>
Содержимое файла _delete_referer.lua
Код:
function main()
x, n = string.gsub(hc_header, "[Rr]eferer:[^\n]*\n", "", 1)
if n > 0 then
hc_header = x
hc_header_replace = true
end
end
От содержимого собственно скрипта (_delete_referer.lua) поведение сервера не зависит.
Проблема:
При включении обработки скриптов lua2 (script://lua/request) при совпадении условий (в данном случае  " #.  ", условия менял на другие, важен факт совпадения условий) любой запрос сервером обрабатывается с ошибкой.
В браузере
Код:
Service Unavailable
HandyCache: No DNS records for www.ya.ru (err 123)
В мониторе
Код:
06.02.2009/22:50:28 local1/127.0.0.1 http://www.ya.ru/ 0 0/131 0 0 "503 Service Unavailable (HC)" lua2
lua2 
В логе
Код:
06.02.09 22:50:28,375 # 35 <<< URL: http://www.ya.ru/
Sleep(ConnectRepeatPause)

06.02.09 22:50:33,000 # 35 <<< URL: http://www.ya.ru/
Connection to lua:80

06.02.09 22:50:36,062 # 35:  Outbound Connection failed

06.02.09 22:50:37,062 # 35 <<< URL: http://www.ya.ru/
HTTP/1.1 503 Service Unavailable (HC)
Server: HandyCache
Content-Type: text/html
Content-Length: 240
Connection: Keep-alive


06.02.09 22:50:37,062 # 35/268 >>> URL: http://www.ya.ru/
Connected to host: lua, port: 80

06.02.09 22:50:37,062 # 35/268 >>> URL: http://www.ya.ru/
GET /requestwww.ya.ru/ HTTP/1.1
Host: lua
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
If-Modified-Since: Sun, 11 Jan 2009 11:50:37 GMT
If-None-Match: "2065176078"
Cache-Control: max-age=0


06.02.09 22:50:37,062 # 35:  Client Disconnection

06.02.09 22:50:41,937 # 34:  Client Disconnection

06.02.09 22:51:08,562 # 36: Connection from local1/127.0.0.1 to HC Version 1.00 RC1 (1.0.0.64a)

06.02.09 22:51:10,656 # 36: DNS resolve lua --> Err 123

как видно идет обращение к обработчику, как lua:80 в итоге не ресолвиться DNS

Что я не так делаю?

PS кстати, парсинг прокси файлов lua.lst и luar.lst  (возможно и скриптов) критично относится к присутствию символа перевода каретки (CR LF) в конце строки и в конце файла. пока это понял, ронял прокси постоянно.


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 09 февраля 2009, 15:38:31
Версия HandyCache 1.0.0.64a не умеет работать со скриптами запросов!
Их подержка введена с версии 1.0.0.103, что указано во всех анонсах и даже в шапке скрипта _delete_referer.lua, на котором ты ставил опыты!


Название: Re: Скрипты Lua в HandyCache
Отправлено: Kserg от 09 февраля 2009, 16:21:28
Действительно,  твоем скрипте http://handycache.ru/component/option,com_smf/Itemid,10/topic,1120.msg15653/#msg15653 указано
-- Скрипт для HandyCache v 1.00 RC2 (1.0.0.103)
Тоже и в анонсе на главной странице (Добавлены скрипты для заголовков запросов)
К сожалению, я анонсы читаю невнимательно, ориентировался на документацию
http://handycache.ru/content/view/8/5/1/5/ а там об этом ни слова.

Спасибо за разъяснение :)


Название: Re: Скрипты Lua в HandyCache
Отправлено: Oleg от 24 февраля 2009, 22:43:23
 Возможен сценарий, если не Content-Encoding:gzip, то на WebWarper.


Название: Re: Скрипты Lua в HandyCache
Отправлено: Torren от 01 марта 2009, 10:45:32
Помогите пожалуйста, заранее извините если где такое уже проходило.

Система такая, есть 2 юзера, которые доступ в интернет получают через внешний прокси:

-Vova

-Vasya

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

1) Обоим поставить ограничение скорости по времени с 01.00 до 09.00 в 2000 к/бит, а в остальное время - 1000 к/бит, при этом ограничения накладываются при одновременном доступе, а когда пользуется проксей только один юзер, то с него ограничения снимаются.

2) Ограничения по скорости действуют только для файлов размером свыше 50 мб.


P.S. Что еще надо сделать на клиентских машинах, если у каждого юзера есть свой список доменов, на которые они хотели бы заходить в обход внешнего прокси. Например для ресурсов своей локальной сети.


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 02 марта 2009, 13:11:06
при этом ограничения накладываются при одновременном доступе, а когда пользуется проксей только один юзер, то с него ограничения снимаются.

В зависимости от активности нескольких пользователей канал разделить не получится, т.к. динамическое распределение канала пока в HC не реализовано.

Цитировать
2) Ограничения по скорости действуют только для файлов размером свыше 50 мб.

Это можно. Выше были примеры.

Цитировать
P.S. Что еще надо сделать на клиентских машинах, если у каждого юзера есть свой список доменов, на которые они хотели бы заходить в обход внешнего прокси. Например для ресурсов своей локальной сети.

Список внешних прокси может быть один на всех. Персонализация правил по пользователям пока не реализована.


Название: Re: Скрипты Lua в HandyCache
Отправлено: gorelkinaog от 02 марта 2009, 22:51:01
Всем добрый вечер!Сегодня поставила последнюю версию программы все сделала по инструкции и по умолчанию.У меня вылетает синий экран смерти.И вот такая запись.
DRIVER_IRQL_NOT_LESS_OR_EQUAL
И в конце
FTPFILT-Adress F799A6CA base AtF7999000
STOP:OK
contact your system administrator or technical support group for furtcher assistance


Название: Re: Скрипты Lua в HandyCache
Отправлено: olDjeka от 13 марта 2009, 20:20:01
Недавно проявились проблемы HandyCache RC2 1.0.0.103 с gzip (http://handycache.ru/component/option,com_smf/Itemid,10/topic,1661.0/).
Для решения необходимо чтобы по заданным адресам отлючался запрос сжатия.
Предполагаю что с помощью правил это не получится, возможно ли это спомощью скрипта?
Если да, то буду благодарен за помощь.


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 16 марта 2009, 10:14:26
Предполагаю что с помощью правил это не получится, возможно ли это спомощью скрипта?

Да, через удаление из заголовков запросов строки: "Accept-Encoding: ...".
Выше были примеры с похожими скриптами...


Название: Re: Скрипты Lua в HandyCache
Отправлено: Walder от 21 марта 2009, 12:03:44
Доброго времени суток !

Есть вопросы:

1) Имеется скрипт - function main()
 if hc_user_name == 'ww' and hc_user_from_internet > 1000000 then
  hc_action = 'stop'
 end который устанавливает лимит дневного трафика по пользователям- 1000000 это сколько мегабайт? мне нужно 1 гиг разбить на user1 = 100mb, user2 = 200mb, user3 = 150mb и.т.д это какие числа будут ?

2) трафик будет считаться тока то что обновляет ? или и то что обновляет и берется из кеша в месте ?

3) нужно для всех пользователей поставить исключение, чтоб например локальный ресурс - handycache.ru не высчитывался из  заданного каждому  лимита ! это в luaR.lst  перед скриптом -#.  <script=lua\_day_traffic_limits_for_users.lua> нужно поставить !handycache.ru правильно ?

Заранее Благодарю :)


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 23 марта 2009, 13:05:26
1000000 это сколько мегабайт? мне нужно 1 гиг разбить на user1 = 100mb, user2 = 200mb, user3 = 150mb и.т.д это какие числа будут ?

Ты в школе уроки информатики прогуливал, что ли? ;)

1000000 байт = 1000000/1024/1024 = 0,95 Мб
100 Мб = 100*1024*1024 = 104857600 байт
и т.д.

Цитировать
2) трафик будет считаться тока то что обновляет ? или и то что обновляет и берется из кеша в месте ?

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

Цитировать
3) нужно для всех пользователей поставить исключение, чтоб например локальный ресурс - handycache.ru не высчитывался из  заданного каждому  лимита ! это в luaR.lst  перед скриптом -#.  <script=lua\_day_traffic_limits_for_users.lua> нужно поставить !handycache.ru правильно ?

Да, тогда скрипт эти сайты блокировать не будет, но в переменную hc_user_from_internet локальный трафик все равно приплюсуется! Совсем не учитывать локальный трафик не получится...


Название: Re: Скрипты Lua в HandyCache
Отправлено: Влад22 от 06 апреля 2009, 06:30:28
Скачать программу http://forums.eccomagic.com/forum/Attachments/emSpawn.exe_file и поместить ее в папку НС (убрать _file в конце имени файла). Для вызова блокнота в скрипт добавить строку
os.execute([["emSpawn.exe /! notepad.exe"]])
Программа emSpawn нужна, чтобы скрипт не дожидался окончания работы вызванной программы.
Программу не удалось найти, а скрипт получился таким:
---
function GetContentLength(s)
  _,_,x= string.find(s, "[cC]ontent%-[lL]ength: (%d*)")
  if x==nil then return 0 else return tonumber(x) end
end

function main()
  x= GetContentLength(hc_header)
  if x>72 then os.execute([["d:\Program\HandyCache\lua\invmp3.exe d:\Program\HandyCache\lua\beep.mp3"]]) end
end
---
Все бы хорошо, но в момент срабатывания скрипта кратковременно появляется окошко cmd. Можно от этого как то избавиться? В мануалах ничего такого не нашел.  :help:


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 06 апреля 2009, 12:04:34
Цитировать
Программу не удалось найти
Сейчас проверил, программа по той ссылке (http://forums.eccomagic.com/forum/Attachments/emSpawn.exe_file) качается. Попробуй ее использовать.


Название: Re: Скрипты Lua в HandyCache
Отправлено: Влад22 от 06 апреля 2009, 15:00:15
Сейчас проверил, программа по той ссылке (http://forums.eccomagic.com/forum/Attachments/emSpawn.exe_file) качается. Попробуй ее использовать.
Спасибо, программу скачал (ip сайту оказывается не нравился), теперь вызов функии выглядит так:
---
os.execute([["emSpawn.exe /! invmp3.exe beep.mp3"]])
---
Все файлы лежат в папке HandyCache. Но экно все равно появляется, хотя и заметно кратковременнее. Нельзя его заставить совсем не показываться?


Название: Re: Скрипты Lua в HandyCache
Отправлено: mai62 от 06 апреля 2009, 15:36:30
Про опции emSpawn.exe вот, что написано
Цитировать
emSpawn.exe /?
      Display emSpawn version info

emSpawn.exe /! [REST OF YOUR COMMAND]
      Spawns windows based run without cmd box
Ключ "/!" предотвращает появление окна. Может это касается только вызова системных команд?
А про опции invmp3.exe ничего неизвестно? Может у него есть какой-то ключ для проигрывания без появления окошка?


Название: Re: Скрипты Lua в HandyCache
Отправлено: Влад22 от 06 апреля 2009, 16:05:41
Про опции emSpawn.exe вот, что написано
Ключ "/!" предотвращает появление окна. Может это касается только вызова системных команд?
А про опции invmp3.exe ничего неизвестно? Может у него есть какой-то ключ для проигрывания без появления окошка?
Известно   :D У invmp3.exe совсем НЕТ ОКНА!   :lol:
Т.е мелькает не окошко вызываемой проги, а окно cmd.
Пробовал запускать блокнот и другие проги, все равно окошко кратковременно появляется.

Может кто-нибудь тоже использовал эту функцию из под ХК? Интересно было бы услышать опыт других, если такой имеется.


Название: Re: Скрипты Lua в HandyCache
Отправлено: Михаил от 06 апреля 2009, 17:31:03
Когда-то тоже наткнулся на эту неприятность os.execute и io.popen. Выхода не нашел, и мысль использовать в скрипте внешнюю программу пришлось предать забвению.
PS Если я правильно помню (не факт), вместо os.execute+emSpawn.exe можно использовать io.popen.


Название: Re: Скрипты Lua в HandyCache
Отправлено: Walder от 13 апреля 2009, 15:28:42
DenZzz благодарю !

Есть еще один вопрос : имеется скрипт -
function FindUrl(s)
  x,_ = string.find(hc_url, s)
  return x
end

function main()

 hc_action = "stop"

 if hc_user_name == "Sergey" and
  (FindUrl("mail%.ru")~=nil or
   FindUrl("autodesk%.com")~=nil) then
  hc_action = ""
 end

который Блокирует все, кроме определенных сайтов для определенных пользователей!  а мне нужно чтоб он не блокировал ВСЕХ, а блокировал тока "Sergey" на все сайты  кроме (FindUrl("mail%.ru")~=nil or
FindUrl("autodesk%.com")~=nil) then, а у всех остальных все работало как обычно ! заранее благодарю !


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 15 апреля 2009, 14:23:09
мне нужно чтоб он не блокировал ВСЕХ, а блокировал тока "Sergey" на все сайты  кроме (FindUrl("mail%.ru")~=nil or
FindUrl("autodesk%.com")~=nil) then, а у всех остальных все работало как обычно !

Скрипт будет таким:

Код:
-- Скрипт для HandyCache v1.00 RC2 (1.0.0.103)

function FindUrl(s)
  x,_ = string.find(hc_url, s)
  return x
end

function main()

 if hc_user_name == "Sergey" and
  (FindUrl("mail%.ru")==nil and
   FindUrl("autodesk%.com")==nil) then
  hc_action = "stop"
 end

end


Название: Re: Скрипты Lua в HandyCache
Отправлено: samaralib от 15 апреля 2009, 20:25:08
Есть скрипт
скрипт, запрещающий открывать сайты однокласники.ру и в контакте.ру всем юзерам, кроме одного.

В luaR.lst добавь строку:   
+odnoklassniki.ru|vkontakte.ru  <script=lua\_block_for_users.lua>

В папке Lua создай файл _block_for_users.lua с таким содержимым:

Код:
-- Скрипт для HandyCache v1.00 RC2 (1.0.0.103)
function main()
 hc_action = 'stop'
 if hc_user_name == 'Boss' then
  hc_action = ''
 end
end


Можно ли как то дописать скрип чтоб кроме запрета на экран броузера выдавадлось еще и сообщение что мол доступ такомоту пользователь в даному сайту запрещен.
Если можно то подскажите как это можно сделать!


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 19 апреля 2009, 19:00:24
Можно ли как то дописать скрип чтоб кроме запрета на экран броузера выдавадлось еще и сообщение что мол доступ такомоту пользователь в даному сайту запрещен.

Можно просто прописать свой файл в поле "Показывать файл" в Черном списке, тогда пользователь будет получать твое сообщение. Либо формировать ответ прямо скриптом. Например так:

Код:
-- Скрипт для HandyCache v1.00 RC2 (1.0.0.103)
function main()
 if hc_user_name ~= 'Boss' then
  hc_answer_header=
  'HTTP/1.1 430 OK\13\10'..
  'Server: Lua-script\13\10'..
  'Content-Type: text/html\13\10'..
  'Connection: close\13\10\13\10'

  hc_answer_body= 'file=d:\\blocked.htm'
 end
end

В файл d:\blocked.htm пишешь любой свой текст в формате HTML.


Название: Re: Скрипты Lua в HandyCache
Отправлено: doctor_ORZ от 20 апреля 2009, 14:55:46
Есть скрипт
скрипт, запрещающий открывать сайты однокласники.ру и в контакте.ру всем юзерам, кроме одного.


Чё-то не работает :(
Там имя компа должно быть или имя юзера? Прописал и то и другое - не работает. Сайты должны быть внесены в черный список я полагаю? У меня внесены.


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 26 апреля 2009, 22:56:17
Там имя компа должно быть или имя юзера?

Имя юзера, как в списке "Доступ".

Цитировать
Прописал и то и другое - не работает.

У меня все работало!

Цитировать
Сайты должны быть внесены в черный список я полагаю?

Неправильно полагаешь. Тогда они будут блокироваться для всех пользователей, а тебе надо выборочно для некоторых, поэтому блокировкой должен заниматься скрипт _block_for_users.lua, а не "Черный список".



Название: Re: Скрипты Lua в HandyCache
Отправлено: doctor_ORZ от 29 апреля 2009, 11:06:05
Нашел причину - двойные кавычки (") заменены были на одиночные ('). Потому и не работало. Спасибо. Но есть ещё вопрос - синтаксис добавления юзеров какой? Ну, что бы не только "Boss", но ещё и других добавить?
Опс... нашел, разобрался. Сорри.


Название: Re: Скрипты Lua в HandyCache
Отправлено: olDjeka от 01 мая 2009, 03:47:15
Взамен скриптов "save_no_update_403_and_404.lua" и "save_404.lua" собрал скрипт
"Сохранять ответы 403 и 404, если их нет в кэше".
Буду благодарен если проверите и поможете оптимизировать.

Код:
function GetAnswerCode(s)
  _,_,x = string.find(s, "HTTP/1%.%d +(%d+)")
  if x==nil then return -1 else return tonumber(x) end
end

function main()
 -- выясняем код ответа из заголовка
  answ_code = GetAnswerCode(hc_header)
 -- если код ответа 403 или 404
  if answ_code==403 or answ_code==404 then
   -- и если его нет в кэше
    if hc_cache_file_size<0 then
     -- то сохранить ответ
       hc_action = "save" end
  end
end


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 01 мая 2009, 14:30:15
Нашел причину - двойные кавычки (") заменены были на одиночные (').

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

Буду благодарен если проверите и поможете оптимизировать.

Проверить и отладить скрипт ты можешь сам в LuaTest.exe. А что оптимизировать в 10 строках кода?


Название: Re: Скрипты Lua в HandyCache
Отправлено: avk02 от 02 мая 2009, 15:33:23
1. Я делаю ежедневные бэкапы кэша HC (только файлы, добавленные за этот день, запуск в автозагрузке, либо по таймеру)
Первоначально с помощью самописной утилитки создавал список файлов (перелопатив весь кэш) и передавал его архиватору (архив при этом создаётся быстро), затем стал использовать WinRar - там есть ключи для выбора даты-времени добавляемых файлов ("до" и "после").
Но по времени это примерно одинаково. И довольно прилично нагружается процессор при запуске ОС.
Хотелось бы, чтобы HC сам создавал список файлов, добавленных в кэш за определённый день.
Пробовал для этого lua, но он похоже не имеет выхода "вовне".
По крайней мере элементарно создать файл и записать туда строку не получается:
local aFile = assert( io.open( dateToday, 'a+' ) )
aFile:write( hc_answer_body )
aFile:close()
Буду благодарен за какие-либо идеи по этому поводу.

Ещё чуток.
2. LuaTest не работает с кэшем?  У меня версия от 26/12/2007.
3. Где доступен hccmd?
4. Можно ли как-то посмотреть заголовки после работы lua-скриптов (с server=lua) - HC их наружу не отдаёт, только с server=hc. В логе тоже нет.

Спасибо.


Название: Re: Скрипты Lua в HandyCache
Отправлено: SolidSnake от 06 мая 2009, 17:22:09
Добрый день.
В сетке нужно заблокировать скачивание файлов (#\.(avi|exe|flv|iso|mov|mp3|mp4|mpg|mpeg|msi|ogg|wma|wmv)(\?|$) ) для группы людей, кроме одного или несколько человек, подскажите как правильно это реализовать в скриптах?


Название: Re: Скрипты Lua в HandyCache
Отправлено: Влад22 от 07 мая 2009, 03:46:55
Буду благодарен за какие-либо идеи по этому поводу.
Проблема давно уже решена. Для этого можно использовать 2 набора кешей. Первый (большой, для чтения) - это основной кеш. А второй - это новые файлы. Делаем бекап второго и переносим его в первый. Операция занимает несколько секунд )


Название: Re: Скрипты Lua в HandyCache
Отправлено: Walder от 12 мая 2009, 08:13:54
Зравствуйте 

Такой вопрос - есть скипт-function main()

 if hc_user_name == 'Mishustik' and hc_user_from_internet > 10485760 then
  hc_action = 'stop'
 end

Можно ли сделать так чтоб когда закончился лимит он блокировал все кроме Аськи например! Спасибо !


Название: Re: Скрипты Lua в HandyCache
Отправлено: DenZzz от 12 мая 2009, 17:30:40
Можно ли сделать так чтоб когда закончился лимит он блокировал все кроме Аськи например!

Впиши исключения в файл luaR.lst перед вызовом твоего скрипта.



Тема закрыта в связи с переходом на систему расширений на основе скриптов на языке Lua. Новая тема по расширениям находится здесь... (http://handycache.ru/component/option,com_smf/Itemid,10/topic,1120.0/)