Главная
Форум
Контакты
Купить
Поддержи проект
Поиск
Искать:
Расширенный поиск
[Закрыть]
Правила форума
Войти
Регистрация
Russian
English
HandyCache форум
Главная категория
»
Общие вопросы
»
Расширения на языке Lua в HandyCache
Имя пользователя:
1 час
1 день
1 неделя
1 месяц
Навсегда
Пароль:
Страниц:
1
...
8
9
[
10
]
11
12
...
29
Вниз
« предыдущая тема
следующая тема »
Отправить эту тему
Печать
Автор
Тема: Расширения на языке Lua в HandyCache (Прочитано 437535 раз)
0 Пользователей и 1 Гость смотрят эту тему.
k_ok_o_s
Новичок
Репутация: +0/-0
Offline
Сообщений: 19
Расширения на языке Lua в HandyCache
«
Ответ #180 :
10 января 2010, 01:12:20 »
DenZzz
Спасибо за ответ!
Цитировать
Если лень вчитываться,
А вот слона-то я и не приметил...
Кажется, я понял Ваши слова про пересмотр концепции
Сообщить модератору
Записан
MetersBonwe
Новичок
Репутация: +0/-0
Offline
Сообщений: 10
Расширения на языке Lua в HandyCache
«
Ответ #181 :
10 января 2010, 04:26:41 »
Цитата: DenZzz от 09 января 2010, 10:27:22
Это давно есть в штатных настройках HC: "Общие => Дозвон => Внешний прокси для этого подключения".
Вы меня не поняли) если там убрать галку, то она слетает и на закладке "Внешние прокси" - я про это и писал, что все время приходится ее дергать туда-сюда. Внешний прокси у меня используется только при выходе через локалку, при дозвоне он не нужен. Я хотел спросить, можно ли это как-то автоматизировать, чтобы HC при дозвоне использовал свои настройки для дозвона, а не глобальные настройки безусловного внешнего прокси для HC? Например, с помощью расширения.
Я пытался сделать это через условные прокси, но там не нашел необходимого параметра, который нужно прописать ((
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Расширения на языке Lua в HandyCache
«
Ответ #182 :
10 января 2010, 12:29:33 »
Цитата: MetersBonwe от 10 января 2010, 04:26:41
Я хотел спросить, можно ли это как-то автоматизировать, чтобы HC при дозвоне использовал свои настройки для дозвона, а не глобальные настройки безусловного внешнего прокси для HC? Например, с помощью расширения.
Из расширения можно менять внешние прокси, но нет возможности определить способ соединения с Инет.
Сообщить модератору
Записан
k_ok_o_s
Новичок
Репутация: +0/-0
Offline
Сообщений: 19
Расширения на языке Lua в HandyCache
«
Ответ #183 :
12 января 2010, 00:18:19 »
MetersBonwe
Цитировать
нет возможности определить способ соединения с Инет
я рекомендовал бы посмотреть в сторону AutoIt для ответа на этот вопрос. Может быть, там можно это узнать. И ещё - в AutoIt прекрасная русская справка.
Сообщить модератору
Записан
MetersBonwe
Новичок
Репутация: +0/-0
Offline
Сообщений: 10
Расширения на языке Lua в HandyCache
«
Ответ #184 :
13 января 2010, 05:41:03 »
Цитата: k_ok_o_s от 12 января 2010, 00:18:19
я рекомендовал бы посмотреть в сторону AutoIt для ответа на этот вопрос.
Спасибо, про него-то я совсем забыл)))
Сообщить модератору
Записан
k_ok_o_s
Новичок
Репутация: +0/-0
Offline
Сообщений: 19
Расширения на языке Lua в HandyCache
«
Ответ #185 :
16 января 2010, 23:31:22 »
DenZzz
Надеюсь на Вашу помощь!
Вроде пересмотрел концепцию, LuaTest.exe не ругается, но и килобайты не считает, а HC виснет :-(
Код:
--[[ <HCExtension>
@name Сторож сетевой активности клиентов
@author k_ok_o_s
@version 1.0
@description Автоматическое изменения скорости работы FDM в зависимости от сетевой активности:
1)клиентов HC (на локальном ПК)
2)пользователя из локальной сети, совместно с кот. используется интернет-канал
@event
Init/Init
@event BeforeAnswerBodySend/BeforeAnswerBodySend
</HCExtension> ]]
function Init()
dir="C:\\Soft\\AU3_Client-Server_speed\\" --папка со скриптами:
n=3 --если за n сек. траффик >a Кб. , то скорость FDM снижается
a=10
m=60 --если за m сек. траффик <b Кб. , то скорость FDM повышается
b=300
last_traffic=0
hc.set_global('current_traffic', 0)
while 1 do
repeat
hc.sleep(n*1000)
traffic=hc.get_global('current_traffic')
delta_traffic=traffic-last_traffic
last_traffic=traffic
hc.put_msg(2, "За последние "..n.." сек. траффик составил "..(delta_traffic/1024).." Кб.")
until delta_traffic>(a*1024)
--hc.shell_execute(dir..'FdmSpeedToMin.exe', nil, nil, 'SW_HIDE')
hc.put_msg(2, 'Скорость FDM снижена')
repeat
hc.sleep(m*1000)
traffic=hc.get_global('current_traffic')
delta_traffic=traffic-last_traffic
last_traffic=traffic
hc.put_msg(2, "За последние "..m.." сек. траффик составил "..(delta_traffic/1024).." Кб.")
until delta_traffic<(b*1024)
ClientLowState = io.open(dir.."SpeedOfClientIsLow.tmp") --Эта функция открывает файл в режиме, указанном в строке mode. Возвращает хендлер файла, или, в случае ошибок, nil и сообщение об ошибке.
if not ClientLowState then
--hc.shell_execute(dir..'FdmSpeedToMax.exe', nil, nil, 'SW_HIDE')
hc.put_msg(2, 'Скорость FDM повышена')
end
end
end
function BeforeAnswerBodySend()
hc.set_global('current_traffic', (hc.user_to_internet+hc.user_from_cache+hc.user_from_internet))
end
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Расширения на языке Lua в HandyCache
«
Ответ #186 :
17 января 2010, 00:02:19 »
Цитата: k_ok_o_s от 16 января 2010, 23:31:22
HC виснет
Видимо, потому что расширение так и не может завершить инициализацию. Хорошо бы обработчик события Init завершать сразу, не создавая бесконечный цикл.
Всю работу я бы возложил на обработчики событий AnswerHeaderReceived и BeforeAnswerBodySend.
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Расширения на языке Lua в HandyCache
«
Ответ #187 :
17 января 2010, 11:58:34 »
Цитата: k_ok_o_s от 16 января 2010, 23:31:22
Вроде пересмотрел концепцию, LuaTest.exe не ругается, но и килобайты не считает, а HC виснет :-(
Как уже сказал
Михаил
, Init нельзя бесконечно зацикливать.
Но есть и другая проблема - она в использовании функции hc.sleep(). Пока выполняется эта функция, HC приостанавливает обработку текущего потока до ее завершения, поэтому hc.sleep() нежелательно использовать в твоем случае, иначе клиенты HC долго не дождутся своих данных.
Для отсчета секунд рекомендую использовать функцию
os.clock()
и событие
Timer1s
.
От циклов while и repeat лучше отказаться совсем.
Сценарий примерно такой:
Раз в секунду твое расширение обрабатывает событие Timer1s. Оно запрашивает из глобальные переменных сохраненные там счетчики трафика и времени, и в случае срабатывания твоих условий (если за n сек. траффик >a Кб или если за m сек. траффик <b Кб) запускает нужные команды для внешних программ.
Счетчики трафика и метки времени пишет в глобальные переменные обработчик события RequestHeaderReceived.
Исходные настройки (dir, n, a, m, b) задаются в событии Init через таблицу hc_static.
Сообщить модератору
Записан
k_ok_o_s
Новичок
Репутация: +0/-0
Offline
Сообщений: 19
Расширения на языке Lua в HandyCache
«
Ответ #188 :
18 января 2010, 03:38:59 »
Михаил
,
DenZzz
спасибо за советы. Переделал расширение - HC уже не виснет, но и ничего вообще не происходит. Ткните, пожалуйста, где я ошибся.
Код:
--[[ <HCExtension>
@name Сторож сетевой активности клиентов
@author k_ok_o_s
@version 1.0
@description Автоматическое изменения скорости работы FDM в зависимости от сетевой активности:
1)клиентов HC (на локальном ПК)
2)пользователя из локальной сети, совместно с кот. используется интернет-канал
@event
Init/Init
@event Timer1s/Timer1s
@event RequestHeaderReceived/RequestHeaderReceived
</HCExtension> ]]
function Init()
dir="C:\\Soft\\AU3_Client-Server_speed\\" --папка со скриптами:
n=3 --если за n сек. траффик >a Кб. , то скорость FDM снижается
a=10
m=60 --если за m сек. траффик <b Кб. , то скорость FDM повышается
b=300
hc.set_global('last_traffic', 0)
hc.set_global('current_traffic', 0)
hc.set_global('time_counter', 0)
hc.set_global('job_switch', 'wait_for_high_traffic')
end
function Timer1s()
hc.set_global('time_counter', (hc.get_global('time_counter')+1))
if job_switch=="wait_for_high_traffic" and hc.get_global('time_counter')==n then
hc.put_msg(2, "За последние "..n.." сек. траффик составил "..((hc.get_global('current_traffic')-hc.get_global('last_traffic'))/1024).." Кб.")
if (hc.get_global('current_traffic')-hc.get_global('last_traffic'))>(a*1024) then
--hc.shell_execute(dir..'FdmSpeedToMin.exe', nil, nil, 'SW_HIDE')
hc.put_msg(2, 'Скорость FDM снижена')
hc.set_global('job_switch', 'wait_for_low_traffic')
end
hc.set_global('last_traffic', hc.get_global('current_traffic'))
elseif job_switch=="wait_for_low_traffic" and hc.get_global('time_counter')==m then
hc.put_msg(2, "За последние "..m.." сек. траффик составил "..((hc.get_global('current_traffic')-hc.get_global('last_traffic'))/1024).." Кб.")
if ((hc.get_global('current_traffic')-hc.get_global('last_traffic'))<(b*1024)) and not io.open(dir.."SpeedOfClientIsLow.tmp") then
--hc.shell_execute(dir..'FdmSpeedToMax.exe', nil, nil, 'SW_HIDE')
hc.put_msg(2, 'Скорость FDM повышена')
hc.set_global('job_switch', 'wait_for_high_traffic')
end
hc.set_global('last_traffic', hc.get_global('current_traffic'))
end
end
function RequestHeaderReceived()
hc.set_global('current_traffic', (hc.user_to_internet+hc.user_from_cache+hc.user_from_internet))
end
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Расширения на языке Lua в HandyCache
«
Ответ #189 :
18 января 2010, 04:50:10 »
Навскидку вижу три момента:
- переменные dir,a,b,n,m используются только в Timer1s, поэтому там и должны объявляться/инициализироваться;
- т.к. имеем дело с глобальной переменной, то " if job_switch" недопустимо. Надо " if hc.get_global('job_switch')";
- глобальная переменная time_counter достигнет значения n или m и вызовет срабатывание определенных действий один раз. Далее эта переменная уходит в бесконечность, и последующих срабатываний не будет.
Сообщить модератору
Записан
k_ok_o_s
Новичок
Репутация: +0/-0
Offline
Сообщений: 19
Расширения на языке Lua в HandyCache
«
Ответ #190 :
18 января 2010, 05:26:49 »
Михаил
Спасибо! нашёл и другие ошибки. Главное - уже что-то работает!!! :-) Но пора спать. :-)
Цитировать
переменные dir,a,b,n,m используются только в Timer1s, поэтому там и должны объявляться/инициализироваться
это я просто "не въехал" в то, что посоветовал
DenZzz
Цитировать
Исходные настройки (dir, n, a, m, b) задаются в событии Init через таблицу hc_static.
подумал, что достаточно присвоить значения переменным, и они попадут в таблицу hc_static :-)
Сообщить модератору
Записан
k_ok_o_s
Новичок
Репутация: +0/-0
Offline
Сообщений: 19
Расширения на языке Lua в HandyCache
«
Ответ #191 :
24 января 2010, 21:00:46 »
Скажите, пожалйуста, вроде как нет простого пути чтобы в расширении заполучить дату и время создания к.-л. файла ?
Сообщить модератору
Записан
mai62
Автор HC
Репутация: +226/-4
Offline
Сообщений: 6383
Расширения на языке Lua в HandyCache
«
Ответ #192 :
24 января 2010, 22:26:07 »
Сейчас такой встроенной возможности, действительно, нет. Но можно поискать стороннюю lua-библиотеку для работы с файловой системой, например, здесь
http://luaforge.net/
В следующей весии НС будет добавлена функция hc.file_last_modified_time(fn).
Сообщить модератору
Записан
k_ok_o_s
Новичок
Репутация: +0/-0
Offline
Сообщений: 19
Расширения на языке Lua в HandyCache
«
Ответ #193 :
25 января 2010, 07:49:35 »
mai62
Цитировать
будет добавлена функция hc.file_last_modified_time(fn)
ЗдОрово! И она сможет возвращать табличку, как
os.date
?
Цитировать
если format равен "*t", то date возвращает таблицу со следующими полями: year (год, четыре цифры), month (месяц, 1 – 12), day (день, 1 – 31), hour (час, 0 – 23), min (минуты, 0 – 59), sec (секунды, 0 – 61), wday (день недели, воскресенью соответствует 1), yday (день года)
Сообщить модератору
Записан
mai62
Автор HC
Репутация: +226/-4
Offline
Сообщений: 6383
Расширения на языке Lua в HandyCache
«
Ответ #194 :
25 января 2010, 10:46:26 »
Сейчас эта функция выдает время в числовом представлении (время в секундах, прошедшее после 0 часов 0 минут 1 января 1970 года). Когда значение времени в таком виде, его легко сравнивать с другим значением, например, с временем выдаваемым функцией os.time(). Легко, например, получить возраст файла в днях (hc.file_last_modified_time(fn)-os.time())/(24*60*60) или в минутах (hc.file_last_modified_time(fn)-os.time())/60.
Также легко получить время в строковом виде hc.systime_to_str(hc.file_last_modified_time(fn)).
А тебе нужна именно таблица?
Сообщить модератору
Записан
k_ok_o_s
Новичок
Репутация: +0/-0
Offline
Сообщений: 19
Расширения на языке Lua в HandyCache
«
Ответ #195 :
25 января 2010, 20:32:26 »
Цитировать
А тебе нужна именно таблица?
Нет, как раз
время в числовом представлении
существенно упрощает алгоритм моей идеи
Сообщить модератору
Записан
olDjeka
Постоялец
Репутация: +6/-0
Offline
Сообщений: 117
Расширения на языке Lua в HandyCache
«
Ответ #196 :
31 января 2010, 13:53:14 »
Вроде везде посмотрел, но не нашёл.
Возможно ли с помощью расширения узнавать о разрыве соединения с сервером?
Если да, то как?
Сообщить модератору
Записан
Zoynels
Новичок
Репутация: +1/-0
Offline
Сообщений: 42
Расширения на языке Lua в HandyCache
«
Ответ #197 :
15 апреля 2010, 04:53:45 »
Здравствуйте, можно ли как-то с помощью скриптов сохранять и передавать cookie. Просто работяю на разных браузерах, точнее Opera и Offline Explorer. И если в Опере регистрирушься, то пропадает регистрация в OE. И наоборот.
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Расширения на языке Lua в HandyCache
«
Ответ #198 :
15 апреля 2010, 09:17:20 »
Цитата: Zoynels от 15 апреля 2010, 04:53:45
Здравствуйте, можно ли как-то с помощью скриптов сохранять и передавать cookie.
Теоретически, да.
Сообщить модератору
Записан
Zoynels
Новичок
Репутация: +1/-0
Offline
Сообщений: 42
Расширения на языке Lua в HandyCache
«
Ответ #199 :
16 апреля 2010, 05:25:02 »
Цитата: DenZzz от 15 апреля 2010, 09:17:20
Теоретически, да.
А практически? Если можно то с небольшим примером, пожайлуста.
Сообщить модератору
Записан
Страниц:
1
...
8
9
[
10
]
11
12
...
29
Вверх
Отправить эту тему
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Главная категория
-----------------------------
=> Общие вопросы
=> Новые предложения
=> Дополнения, плагины
=> Сжатие трафика
=> English forum
=> Indonesian forum
-----------------------------
Гостевая
-----------------------------
=> Гостевая
-----------------------------
Дела домашние
-----------------------------
=> Сайт и форум HandyCache
=> Курилка
© 2006-2014 HandyCache Team. Все права защищены.
Загружается...