+  HandyCache форум
|-+  Главная категория» Общие вопросы» Расширения на языке Lua в HandyCache
Имя пользователя:
Пароль:
Страниц: 1 ... 7 8 [9] 10 11 ... 29   Вниз
  Отправить эту тему    Печать  
Автор Тема: Расширения на языке Lua в HandyCache  (Прочитано 438353 раз)
0 Пользователей и 1 Гость смотрят эту тему.
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #160 : 25 декабря 2009, 18:23:08 »

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

http://handycache.ru/component/option,com_smf/Itemid,10/topic,2716.0/

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

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

Сообщений: 8


« Ответ #161 : 25 декабря 2009, 19:06:14 »


а чтобы сообщение выдавалось с определенным текстом как реализовать?
Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #162 : 25 декабря 2009, 19:20:02 »

а чтобы сообщение выдавалось с определенным текстом как реализовать?

Вместо hc.action = 'stop' нужно присваивать значения переменным hc.answer_header и hc.answer_body.

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

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

Сообщений: 19


« Ответ #163 : 27 декабря 2009, 13:38:24 »

  Уважаемый mai62, спасибо за классный продукт!
У меня к Вам просьба: сделайте, пожалуйста, для работы с расширениями ещё 3 таких Функции :

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

Аргументы функции:
stop - обнуление счётчика;
start - старт счётчика.

Возвращаемое значение: Количество данных в байтах, полученных\отправленных пользователем с момента последнего обнуления.

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

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

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

Сообщений: 5589



« Ответ #164 : 27 декабря 2009, 14:08:55 »

k_ok_o_s

Новые предложения - в другом разделе. По динамическому распределению скорости есть уже такая тема:
http://handycache.ru/component/option,com_smf/Itemid,10/topic,98.msg20929/#msg20929


Добавлено: 27 Декабря 2009, 14:54:49

Аргументы функции:
stop - обнуление счётчика;
start - старт счётчика.

Возвращаемое значение: Количество данных в байтах, полученных\отправленных пользователем с момента последнего обнуления.

Все это можно сделать уже сейчас в самом расширении без добавления новых функций в HC.
Сообщить модератору   Записан
k_ok_o_s
Новичок
*

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

Сообщений: 19


« Ответ #165 : 27 декабря 2009, 20:23:07 »

DenZzz, спасибо за обнадёживающий ответ! :-)

DenZzz, не могли бы Вы написать такое расширение (к сожалению, я не программер):

Код:
метка_А: 
Ждать n сек.
Начало цикла
  Если траффик клиента за последние n сек. >a КБ
     то        запустить bat1.bat
                переход на метка_Б
     иначе  ждать n сек.
                переход в начало цикла 
Конец цикла

метка_Б:
Ждать m сек.
Начало цикла
  Если траффик клиента за последние m сек. <b КБ
      то        запустить bat2.bat
                 переход на метка_А   
      иначе  ждать m сек.
                 переход в начало цикла 
Конец цикла
Расширение запускается при старте HC и постоянно работает

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

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

Сообщений: 5589



« Ответ #166 : 27 декабря 2009, 22:58:35 »

DenZzz, не могли бы Вы написать такое расширение (к сожалению, я не программер):

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

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

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

Сообщений: 19


« Ответ #167 : 30 декабря 2009, 11:27:58 »

Приветствую! С Рождеством! :-)

Пару вопросов агронома-программиста :-)

1. Как сделать вывод значения переменной ? Для сообщения я использовал hc.put_msg .
2. Чем отличается родная функция Lua sleep() от  hc.sleep() ?
3. Подскажите, пожалуйста, что в этой
Код:
   last_traffic=hc_user_to_internet+hc_user_from_cache+hc_user_from_internet
строке не нравится LuaTest :


вот моё расширение:
Код:
--[[ <HCExtension>
@name          Сторож сетевой активности клиентов
@author        k_ok_o_s
@version       1.0
@description   Автоматическое изменения скорости работы FDM в зависимости от сетевой активности клиентов HC
@event         Init/Main
</HCExtension> ]]


function Main()
--если за n сек. траффик >a Кб., то скорость FDM снижается
n=3
a=10
--если за m сек. траффик <b Кб., то скорость FDM повышается
m=60
b=300

 while n~=nil do
  repeat
   last_traffic=hc_user_to_internet+hc_user_from_cache+hc_user_from_internet
   sleep(n)
   --print(last_traffic)
  until ((hc_user_to_internet+hc_user_from_cache+hc_user_from_internet-last_traffic)>a*1024)
  --hc.shell_execute('fdm_speed_down.exe', nil, nil, 'SW_HIDE')
  hc.put_msg(2, 'Скорость FDM снижена')
 
  repeat
   last_traffic=hc_user_to_internet+hc_user_from_cache+hc_user_from_internet
   sleep(m)
   --print(last_traffic)
  until ((hc_user_to_internet+hc_user_from_cache+hc_user_from_internet-last_traffic)<b*1024)
  --hc.shell_execute('fdm_speed_up.exe', nil, nil, 'SW_HIDE')
  hc.put_msg(2, 'Скорость FDM повышена')
 end
end
« Последнее редактирование: 30 декабря 2009, 11:39:45 от k_ok_o_s » Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #168 : 30 декабря 2009, 12:17:15 »

1. Как сделать вывод значения переменной ? Для сообщения я использовал hc.put_msg .

Вывод куда? В лог, трей? hc.put_msg формирует всплывающее сообщение в трее.

2. Чем отличается родная функция Lua sleep() от  hc.sleep() ?

У Lua нет родной функции sleep(), поэтому появилась hc.sleep()

3. Подскажите, пожалуйста, что в этой
Код:
   last_traffic=hc_user_to_internet+hc_user_from_cache+hc_user_from_internet
строке не нравится LuaTest :

Переменные таблицы hc сейчас имеют вид: hc.user_to_internet+hc.user_from_cache+hc.user_from_internet , т.е. после hc идет точка, а не "_".

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

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

Сообщений: 19


« Ответ #169 : 30 декабря 2009, 15:04:09 »

Спасибо за ответ.
Я хочу  сделать вывод на экран : За последние n сек. траффик составил a Кб.",
но чтобы вместо n и a  отобразилось значение этих переменных.
насколько я понял, вывод на экран можно организовать только функцией hc.put_msg
Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #170 : 30 декабря 2009, 16:46:43 »

hc.put_msg("За последние "..n.." сек. траффик составил "..a.." Кб.")
Сообщить модератору   Записан
k_ok_o_s
Новичок
*

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

Сообщений: 19


« Ответ #171 : 30 декабря 2009, 17:08:21 »

mai62 Спасибо за ответ и за программу!!!  Улыбка
Сообщить модератору   Записан
k_ok_o_s
Новичок
*

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

Сообщений: 19


« Ответ #172 : 30 декабря 2009, 22:49:35 »

HC 1.0.0.252 . Все расширения, кроме моего, выключены :-)

1. Подскажите, пожалуйста, почему пока не отключу "Серверы-посредники", браузер выдаёт:
Цитировать
HTTP-шлюз не отвечает (код ошибки: 504)
а в мониторе HC -
Цитировать
30.12.2009/21:36:46 local/127.0.0.1 http://www.promoroz.ru/raznoe/raznoe10.php 0 0/148 0 0 "504 Gateway Timeout (HC)" LuaR
LuaR

2. Моё расширение, поскольку запускается как обработчик события Init, не нужно прописывать ни в lua.lst, ни в luaR.lst ?

3. Это из-за вышеозначенных непоняток во всплывающем окошке выводится:
Цитировать
За последние 3 сек. траффик составил 0 Кб.
?
Галочка "Вести статистику" отмечена. Почему ж не подсчитывается траффик?

содержимое файла lua.lst:
Код:
; Файл-список скриптов LUA для обработки заголовков ответов серверов
;-------------------------------------------------------------------

#.  <script=lua\save_or_block_403_and_404.lua>
#/favicon\.ico$  <script=lua\save_404.lua>
#.  <script=lua\dont_update_image_by_type.lua>
#.  <script=lua\dont_update_file_by_size.lua>
#.  <script=lua\block_long_file.lua>
содержимое файла luaR.lst:
Код:
; Файл-список скриптов LUA для обработки заголовков запросов клиентов
;--------------------------------------------------------------------

#.  <script=lua\_dont_update_image_by_type_in_cache.lua>

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

Код расширения (альфа :-) :
Код:
--[[ <HCExtension>
@name          Сторож сетевой активности клиентов
@author        k_ok_o_s
@version       1.0
@description   Автоматическое изменения скорости работы FDM в зависимости от сетевой активности клиентов HC
@event         Init/Main
</HCExtension> ]]


function Main()
--если за n сек. траффик >a Кб., то скорость FDM снижается
n=3
a=10
--если за m сек. траффик <b Кб., то скорость FDM повышается
m=60
b=300

 while n~=nil do
  repeat
   last_traffic=hc.user_to_internet+hc.user_from_cache+hc.user_from_internet
   hc.sleep(n)
   delta_traffic=hc.user_to_internet+hc.user_from_cache+hc.user_from_internet-last_traffic
   hc.put_msg(2, "За последние "..n.." сек. траффик составил "..delta_traffic.." Кб.")
  until ((hc.user_to_internet+hc.user_from_cache+hc.user_from_internet-last_traffic)>a*1024)
  --hc.shell_execute('fdm_speed_down.exe', nil, nil, 'SW_HIDE')
  hc.put_msg(2, 'Скорость FDM снижена')
 
  repeat
   last_traffic=hc.user_to_internet+hc.user_from_cache+hc.user_from_internet
   hc.sleep(m)
   hc.put_msg(2, "За последние "..m.." сек. траффик составил "..(hc.user_to_internet+hc.user_from_cache+hc.user_from_internet-last_traffic).." Кб.")
  until ((hc.user_to_internet+hc.user_from_cache+hc.user_from_internet-last_traffic)<b*1024)
  --hc.shell_execute('fdm_speed_up.exe', nil, nil, 'SW_HIDE')
  hc.put_msg(2, 'Скорость FDM повышена')
 end
end
« Последнее редактирование: 30 декабря 2009, 22:57:29 от k_ok_o_s » Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #173 : 31 декабря 2009, 00:33:24 »

В НС для использования расширений давно не нужны серверы посредники и файлы lua.lst, и в luaR.lst. Перейди на вкладку Настойки/Расширения. Там есть кнопка для добавления расширения. Нажми ее и выбери файл расширения.
Функция main тоже не нужна. В архиве, который ты скачал, есть папка Extensions. Там есть справка по написанию расширений и примеры расширений.
Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #174 : 31 декабря 2009, 00:47:43 »

1. Подскажите, пожалуйста, почему пока не отключу "Серверы-посредники", браузер выдаёт:

Потому что там прописаны старые списки lua.lst и luaR.lst, которые надо удалить совсем, чтобы не мешали.

Цитировать
3. Это из-за вышеозначенных непоняток во всплывающем окошке выводится: ?
Галочка "Вести статистику" отмечена. Почему ж не подсчитывается траффик?

Основная ошибка - переменные hc.user_to_internet+hc.user_from_cache+hc.user_from_internet не доступны из события Init и они содержат объем трафика только одного пользователя HC, а не всех (см. HCExtensions.html).

Есть и другие ошибки, но в данном случае надо пересматривать всю концепцию твоего расширения.
Сколько пользователей у тебя ходит через HC?

Хорошо, если только один. Если же их больше, то пока невозможно узнать реальную нагрузку на канал всех пользователей HC в конкретный момент времени. Я предложил создать новую функцию hc.active_users_list, но это предложение пока не реализовано...
Сообщить модератору   Записан
k_ok_o_s
Новичок
*

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

Сообщений: 19


« Ответ #175 : 31 декабря 2009, 15:17:37 »

mai62
Цитировать
Перейди на вкладку Настойки/Расширения. Там есть кнопка для добавления расширения. Нажми ее и выбери файл расширения.
так я и делал
Цитировать
В архиве, который ты скачал, есть папка Extensions.
отдельно Extensions я не скачивал, в последний раз всё обновилось автоапдейтером, а до этого просто накатывал zip-ы сверху установленного HC (уже несколько лет)
Цитировать
Там есть справка по написанию расширений и примеры расширений.
а ещё в корневой папке HC у меня есть HC_Lua_scripts.html , я его вкладываю в сообщение.
Может, настроить Вам апдейтер так, чтоб он потёр этот старый файл и папку Lua ?

* HandyCache.zip (13.85 Кб - загружено 53 раз.)
Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #176 : 31 декабря 2009, 16:20:36 »

Цитировать
отдельно Extensions я не скачивал, в последний раз всё обновилось автоапдейтером, а до этого просто накатывал zip-ы сверху установленного HC (уже несколько лет)
Скачивать Extensions отдельно не нужно, эта папка находится в файле HandyCacheRC3.1.0.0.252.zip (доступен из раздела Файлы на сайте).
Установить автоапдейтом сборку 252 Вы не могли. Сейчас автоапдейт устанавливает только сборку 193.
В любом случае автоапдейт скачивает тот же архив, что и при ручном скачивании, а затем распаковывает и копирует файлы из архива. Скачанный автоапдейтом архив после обновления не удаляется, посмотрите может у Вас есть этот архив.
Цитировать
а ещё в корневой папке HC у меня есть HC_Lua_scripts.html , я его вкладываю в сообщение.
Может, настроить Вам апдейтер так, чтоб он потёр этот старый файл и папку Lua ?
Не считаю правильным что-то удалять автоматом на компьютере пользователя, а уж тем более целую папку. Мало ли, что там может находиться у пользователя, а я возьму да удалю. В той же папке lua у пользователя могут быть модифицированные или собственные файлы.
Основные изменения, происходящие в программе фиксируются в файле WhatsNew.txt. Более подробную информацию об изменениях можно найти на сайте. Например, информация о переходе от скриптов lua к расширениям на lua опубликована здесь http://handycache.ru/content/view/38/26/ Там же упоминается папка Extensions и файл HCExtensions.html.
Сообщить модератору   Записан
k_ok_o_s
Новичок
*

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

Сообщений: 19


« Ответ #177 : 06 января 2010, 19:17:53 »

С Рождеством!!! Улыбка

mai62
 Смотрю на Ваш ответ и думаю: "Как я мог такие несерьёзные вещи предлагать в прошлом году?"  Смущен

DenZzz
1.
Цитировать
Основная ошибка - переменные hc.user_to_internet+hc.user_from_cache+hc.user_from_internet не доступны из события Init
Естесственно, ведь таблица, содержащая все переменные, создаётся перед первым вызовом к.-л. функции:
Цитировать
(из HCExtensions.html)Перед вызовом функций расширения HandyCache создает  в lua-машине две таблицы: hc и re. В первой собраны значения и функции, позволяющие получать информацию о значениях внутренних переменных HandyCache и изменять некоторые из них.
Как же они могут быть доступны из события Init, если оно
Цитировать
Возникает при загрузке расширений во время старта HandyCache
?
 Или я совсем не понял, о чём речь?

2.
Цитировать
Есть и другие ошибки, но в данном случае надо пересматривать всю концепцию твоего расширения.
В чём же не верна концепция? Или ответ на это кроется в пункте 1?

3.
Цитировать
Сколько пользователей у тебя ходит через HC?
Один.



« Последнее редактирование: 06 января 2010, 19:22:55 от k_ok_o_s » Сообщить модератору   Записан
MetersBonwe
Новичок
*

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

Сообщений: 10


« Ответ #178 : 08 января 2010, 11:36:16 »

Доброго времени суток!
Сижу на работе в локалке, работаю через внешний безусловный прокси.
Периодически выхожу в И-нет через gprs, запарился галочку нажимать "резрешить" на вкладке "внешние прокси",
в связи с чем назрела необходимость:
можно ли создать расширение, которое будет переключать прокси по условию, например, имени содинения с И-нет, или отключать безусловный прокси при условии смены текущего соединения с И-нет.
В общем, разные внешние прокси для разных соединений.
Спасибо заранее
Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #179 : 09 января 2010, 10:27:22 »

2.   В чём же не верна концепция? Или ответ на это кроется в пункте 1?

Ответ на это кроется в описании переменных в HCExtensions.html. Если лень вчитываться, то просто прими как аксиому: переменные hc.user_to_internet+hc.user_from_cache+hc.user_from_internet не доступны из события Init, а доступны только из событий: RequestHeaderReceived, BeforeRequestHeaderSend, AnswerHeaderReceived, BeforeAnswerHeaderSend, BeforeAnswerBodySend.



В общем, разные внешние прокси для разных соединений.

Это давно есть в штатных настройках HC: "Общие => Дозвон => Внешний прокси для этого подключения".
Сообщить модератору   Записан
Страниц: 1 ... 7 8 [9] 10 11 ... 29   Вверх
  Отправить эту тему    Печать  

 
Перейти в: