+  HandyCache форум
|-+  Главная категория» Общие вопросы» Расширения на языке Lua в HandyCache
Имя пользователя:
Пароль:
Страниц: 1 2 [3] 4 5 ... 29   Вниз
  Отправить эту тему    Печать  
Автор Тема: Расширения на языке Lua в HandyCache  (Прочитано 437761 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
alex208210
Beta tester
*****

Репутация: +12/-1
Offline Offline

Сообщений: 129


« Ответ #40 : 04 июня 2009, 07:37:40 »

Код:
--[[ <HCExtension>
@name          allow
@author        DenZzz
@version       0.01
@description   Разрешение определенных url определенным пользователям
@event         RequestHeaderReceived/allow
</HCExtension> ]]


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

function allow()

 if (hc.user_name == "xarakor") and
   FindUrl("net.kanal7%.ru")==nil and
   FindUrl("forum.kanal7%.ru")==nil and
   FindUrl("love.kanal7%.ru")==nil and
   FindUrl("news.kanal7%.ru")==nil and
   FindUrl("games.kanal7%.ru")==nil and
   FindUrl("video.kanal7%.ru")==nil and
 FindUrl("job.kanal7%.ru")==nil and
   FindUrl("foto.kanal7%.ru")==nil and
   FindUrl("job.kanal7%.ru")==nil and
   FindUrl("192.168.66.129")==nil and
   FindUrl("http://radio.kanal7.ru")==nil and
   FindUrl("http://wsus.kanal7.ru/nod2/")==nil and
   FindUrl("cinema.kanal7%.ru")==nil and
    FindUrl("https://webim.qip.ru:5222")==nil and
   FindUrl("https://login.icq.com:443")==nil then
  hc.action = "stop"
 end
end
« Последнее редактирование: 04 июня 2009, 07:47:24 от alex208210 » Сообщить модератору   Записан
mzr
Новичок
*

Репутация: +1/-0
Offline Offline

Сообщений: 17


« Ответ #41 : 04 июня 2009, 13:27:20 »

Walder

Зачем так сложно? Читаем HCExtensions.html

Цитировать
Поля заголовка расширения

rule    Правило (регулярное выражение), которым будет проверяться URL запроса перед вызовом расширения. В заголовке может быть несколько полей rule.
 
exception   Исключение (регулярное выражение), которым будет проверяться URL запроса перед вызовом расширения. В заголовке может быть несколько полей exception.


Сюда вписываем URL.
 
А в самом обработчике расширения - проверяем пользователя и выбираем действие. Все.
Сообщить модератору   Записан
peleccom
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 10


« Ответ #42 : 04 июня 2009, 21:49:27 »

Если нужно заблокировать загрузку файла из интернета то какое значение нужно присвоить hc.action?
пытался присвоить
"dont_update" - опера еще долго пытается что-то загрузить
"stop"- загружается часть файла но потом соединение разрывается ( код ответа 403)

Может нужно модифицировать ответ сервера?

Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #43 : 04 июня 2009, 22:18:13 »

Если нужно заблокировать загрузку файла из интернета то какое значение нужно присвоить hc.action?

"stop"

Цитировать
"stop"- загружается часть файла но потом соединение разрывается ( код ответа 403)

Для какого события вызывается скрипт? Если для RequestHeaderReceived, то HC в инет вообще не полезет! Просто ответит браузеру 403 и все.
Сообщить модератору   Записан
peleccom
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 10


« Ответ #44 : 04 июня 2009, 22:51:04 »

Для какого события вызывается скрипт? Если для RequestHeaderReceived, то HC в инет вообще не полезет! Просто ответит браузеру 403 и все.
А по какому событию можно прочитать тип передаваемых данных(content-type)?
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #45 : 04 июня 2009, 23:19:27 »

А по какому событию можно прочитать тип передаваемых данных(content-type)?

Опять же, смотря откуда читать: из кэша или из инета?

Если из инета, то вместе с заголовками успевает загрузиться несколько килобайт тела файла, пока HC разрывает соединение с сервером, и с этим ничего не поделать...
Сообщить модератору   Записан
peleccom
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 10


« Ответ #46 : 04 июня 2009, 23:21:02 »

А ну тогда понятно.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #47 : 09 июня 2009, 09:22:59 »

Переделал свои скрипты в расширения для HC v1.00 RC2 (1.0.0.180).

Порядок следования расширений в списке extensions.lst у меня такой:

Названия расширений
Названия файлов
Блокировать внешние ссылки (R-ext)eR_Block_external_links.lua
Не обновлять картинки по типу в кэше (R-img)eR_Dont_update_image_by_type_in_cache.lua
Не обновлять видео по типу в кэше (R-vid)eR_Dont_update_video_by_type_in_cache.lua
Сохранять или блокировать ответы 403 и 404 (A-40X)eA_Save_or_block_403_and_404.lua
Сохранять нужные ответы 404 (A-404s)eA_Save_404.lua
Не обновлять картинки по типу с сервера (A-img)eA_Dont_update_image_by_type.lua
Не обновлять видео по типу с сервера (A-vid)eA_Dont_update_video_by_type.lua
Не обновлять файлы по размеру (A-size)eA_Dont_update_file_by_size.lua
Блокировать загрузку больших файлов (A-long)eA_Block_long_file.lua


Функционал тот же, что и у одноименных скриптов, но с парой дополнений:
1. Информация о том, какое расширение сработало теперь выводится в Монитор HC в колонку "Правила".
2. Расширения будут выполнять свои действия только в случае активности соответствующих списков.
Например: действие "stop-" заблокирует загрузку, только если Черный список не был отключен галкой "Разрешить", горячей клавишей или Белым списком. Таким образом, действия скриптов можно будет отключать горячими клавишами для списков, а правила из Белого списка будут распространяться и на скрипты. Это позволяет не дублировать исключения для обычных списков в расширениях.


Внимание!

В версии HC 1.0.0.175 есть баг, из-за которого неправильно работает действие "dont_update" в расширениях, обрабатывающих ответы сервера, а именно:
- Не обновлять картинки по типу с сервера (A-img)
- Не обновлять видео по типу с сервера (A-vid)
- Не обновлять файлы по размеру (A-size)

Рекомендуется скачать новую версию HC RC2 1.0.0.180, в которой эти расширения работают, как им положено.

* HC_Extensions.rar (3.5 Кб - загружено 147 раз.)
« Последнее редактирование: 18 июня 2009, 08:39:41 от DenZzz » Сообщить модератору   Записан
The Alex
Новичок
*

Репутация: +1/-1
Offline Offline

Сообщений: 28


« Ответ #48 : 10 июня 2009, 18:31:20 »

После обновления HC до последней версии 1.0.0.175 серверы-посредники блокируют весь трафик...
Браузер выдает:
Цитировать
ОШИБКА
Запрошенный URL не может быть доставлен.

Во время доставки URL: script://lua/requestforum.qrz.ru/index.php

Произошла следующая ошибка:
Неправильный URL

Некоторые аспекты URL неправильны. Возможные проблемы:
Отсутствует либо неверный протокол доступа (должен быть `http://'' или похожий)
Отсутствует имя сервера
Некорректный двойной управляющий символ в URL-пути
Недопустимый символ в имени сервера; подчёркивания недопустимы

Скрин монитора HC:


Возвращаюсь на предыдущую версию - все ОК!

Списки LUA во вложении:


* lua.lst (0.47 Кб - загружено 83 раз.)
* luaR.lst (0.38 Кб - загружено 71 раз.)
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #49 : 10 июня 2009, 18:53:10 »

The Alex
Старые скрипты не работают в новой версии. Читай это http://handycache.ru/content/view/38/26/
Сообщить модератору   Записан
The Alex
Новичок
*

Репутация: +1/-1
Offline Offline

Сообщений: 28


« Ответ #50 : 10 июня 2009, 19:08:06 »

mai62
ОК! Сори! Разобрался.... Спасибо!
Осталось понять как вводить исключения... Улыбка
Сообщить модератору   Записан
flash
Пользователь
**

Репутация: +1/-0
Offline Offline

Сообщений: 74


« Ответ #51 : 11 июня 2009, 15:09:37 »

DenZzz
Проблемка со скриптом eR_Block_external_links.lua... Не знаю только у меня так или нет, но происходит следующим образом: когда я смотрю какую-то страницу, на ней существуют ссылки на другие, не связанные с ней, если я клацаю по этой ссылке она открывается в новом окне и сразу же срабатывает блокировка ее R-ext. В опере стоит галка Отправлять данные о ссылающейся странице, может дело в этом? Хотя в мониторе хэндикэша таки ссылки отображаются как несвязанные с предыдущим сайтом, то есть в дереве идут отдельной строкой. Лечится это если на заблоканной странице по адресу нажать enter, тогда скрипт похоже адекватно воспринимает и  не блокирует, но както неудобно.На скрине видны 2 заблоканных адреса, и потом разрешенные после нажатия enter в адресной строке.


* 23.jpg (61.22 Кб, 1092x228 - просмотрено 174 раз.)
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #52 : 11 июня 2009, 16:25:50 »

если я клацаю по этой ссылке она открывается в новом окне и сразу же срабатывает блокировка ее R-ext.

Да, этот так. Из HC нет возможности определить, кто иницировал запрос: пользователь или браузер.

Цитировать
В опере стоит галка Отправлять данные о ссылающейся странице, может дело в этом?

Если ее снимешь, то Опера вообще перестанет посылать рефереры и расширение работать не сможет вообще.

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

Это потому, что у этих ссылок появились зависимые, а посмотри в логе HC - реферер там есть.

Цитировать
Лечится это если на заблоканной странице по адресу нажать enter, тогда скрипт похоже адекватно воспринимает и  не блокирует

Да, в этом случае браузер считает, что адрес введен вручную пользователем и не шлет реферер.


В общем, фича известная и я о ней предупреждал, когда выкладывал первую версию этого скрипта. Жаль, что Опера не умеет по желанию пользователя слать нужные запросы без реферера. В Макстоне, например, это делается просто кликом средней кнопкой мыши по ссылке. В Опере ничего подобного я, к сожалению, не нашел. Если есть тут спецы по Опере подскажите, может ли она при клике мышью по ссылкам удалять реферер или хотя бы вставлять какой-нибудь свой заголовок-метку? Тогда я смогу в HC его обработать...

Как вариант, можно настроить горячую клавишу для "Черного списка" и в момент клика по ссылке ее зажимать, тогда расширение блокировать загрузку ссылки не станет.
Сообщить модератору   Записан
flash
Пользователь
**

Репутация: +1/-0
Offline Offline

Сообщений: 74


« Ответ #53 : 11 июня 2009, 18:24:29 »

вот из лога с реферером, он подставляет тот сайт с которого клацнуто как реферер

11.06.09 13:43:06,937 # 143/1208 >>> URL: http://depositfiles.com/files/1076727
DeniedDo:
GET http://depositfiles.com/files/1076727 HTTP/1.1
User-Agent: Opera/10.00 (Windows NT 5.1; U; ru) Presto/2.2.0
Host: depositfiles.com
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: http://smallurl.ru/anonym/?http://depositfiles.com/files/1076727
Cookie: __utmz=10246176.1238524336.2.2.utmcsr=drivec.ru|utmccn=(referral)|utmcmd=referral|utmcct=/; __utma=10246176.777232328940154500.1236858154.1236858154.1238524336.2; v_auth=1244542453dc9e4cd9514cb696ff0815; autologin=c346ded259bf35d55bc86569fc40dd00
Cookie2: $Version=1
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #54 : 11 июня 2009, 18:32:15 »

вот из лога с реферером, он подставляет тот сайт с которого клацнуто как реферер

Да, поэтому расширение и срабатывает. Когда нет реферера, расширение не работает.
Сообщить модератору   Записан
4e4ako
Пользователь
**

Репутация: +3/-0
Offline Offline

Сообщений: 68


« Ответ #55 : 11 июня 2009, 19:36:29 »

В Макстоне, например, это делается просто кликом средней кнопкой мыши по ссылке. В Опере ничего подобного я, к сожалению, не нашел. Если есть тут спецы по Опере подскажите, может ли она при клике мышью по ссылкам удалять реферер или хотя бы вставлять какой-нибудь свой заголовок-метку? Тогда я смогу в HC его обработать...
ползовательские скрипты на яве могут все... - поищите на форуме проекта opera-ac
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #56 : 14 июня 2009, 17:31:52 »

Было бы здорово вообще не кешировать разные *.flv и иже с ними, но без расширения, а я не знаю, умеет уже НС анализировать хотя бы начало файла.

Можно анализировать "Content-Type" с сервера и запрещать писать файлы с типом "video" в кэш:

Код:
--[[ <HCExtension>
@name          Не сохранять видео по типу с сервера (A-vid Dont_save )
@author        DenZzz
@version       0.1 для HC v1.00 RC2 (1.0.0.180) и возможно выше
@description   Не сохранять видео по типу файла в заголовке ответа сервера
@event         AnswerHeaderReceived/Answer
</HCExtension> ]]


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 Answer()

 -- Только для GET-запросов
  if hc.method == 'GET' then

   -- забираем тип файла из заголовка 'Content-Type'
    type = GetContentType(hc.answer_header)
   -- есть ли в поле заголовка 'Content-Type' слово 'video'
    if type~=nil then vid = string.find(type,'video',1,true)
    else vid = nil  end

      if vid~=nil then
            hc.action = 'dont_save'
            hc.monitor_string = hc.monitor_string..'A-vid Dont_save '
      end
  end

end  -- Конец функции Answer


Сообщить модератору   Записан
Wonderboy
Новичок
*

Репутация: +0/-1
Offline Offline

Сообщений: 27


« Ответ #57 : 14 июня 2009, 17:35:55 »

DenZzz , большое спасибо! Предлагаю это расширение включить в дефолтные списки
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #58 : 14 июня 2009, 17:49:05 »

Предлагаю это расширение включить в дефолтные списки

Это расширение совсем не способствует экономии трафика, а в дефолтном списке расширений у меня как раз есть противоположное: "Не обновлять видео по типу с сервера (A-vid)". Подмигивающий
Сообщить модератору   Записан
Wonderboy
Новичок
*

Репутация: +0/-1
Offline Offline

Сообщений: 27


« Ответ #59 : 15 июня 2009, 08:18:56 »

DenZzz
Зато это расширение весьма способствует не превращению кеша в мусорною корзину. Есть много обладателей безлимиток и тем не менее пользователей НС. Если я на YouTube и иже с ними видео смотрю только для ознакомления - зачем мне его пихать в кеш? Хотя вам решать.
Сообщить модератору   Записан
Страниц: 1 2 [3] 4 5 ... 29   Вверх
  Отправить эту тему    Печать  

 
Перейти в: