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

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

Сообщений: 339


« Ответ #380 : 05 июня 2012, 17:59:16 »

> А можете пояснить логику работы...
При ответе 502 немедленно переводит все запросы на прокси указанный в скрипте.
И ждёт не502 ответа от www.goodle.de, как белого флага, для возврата на основной канал.
p.s. у скрипта ряд недостатков, принимай как есть, возможно скоро сделаю новую версию.

> ЛУА мощный язык
Да? ОК, вызови из под lua JavaScript интерпретатор, загрузи в него Auto-Proxy Configuration Script, передай функции FindProxyForURL url и host, после отдай результат функции переменной hc.use_proxy.
p.s. не русском языке тоже пишут вирусы, только мало кто об этом кричит.
Сообщить модератору   Записан
Anymore
Beta tester
*****

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

Сообщений: 339


« Ответ #381 : 23 июня 2012, 22:37:35 »

Почему у меня HC вылетает от такого скрипта?

Код:
--[[ <HCExtension>
@name          *
@author        *
@version       *
@description   *
@event         URLToFileNameConverting/URLToFileNameConverting
</HCExtension> ]]

function URLToFileNameConverting() 
  m_path, present = hc.get_cache_file_name(hc.url)
end
Сообщить модератору   Записан
Zoynels
Новичок
*

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

Сообщений: 42


« Ответ #382 : 24 июня 2012, 11:29:54 »

Заметил такую вещь, если качать сайт с помощью Offline Explorer'a через HC, то в случае если файлы не берутся из кеша, то после загрузки HC в OE закачки некоторое время продолжают висеть, если берётся непосредственно из кеша то всё окей. Также всё окей если OE берёт напрямую их интернета. Можно ускорить переход на загрузку следующего файла если в HC нажать кнопку "разорвать все активные соединения", в этом случае в логе появится строка
"24.06.12 13:24:36,500 # 5979:  Client Disconnection"...

можно ли создать какой-нибудь скрипт который бы при окончании загрузки файла HC (100% высвечивается в мониторе), разрывал соединение с клиентом?
Сообщить модератору   Записан
Anymore
Beta tester
*****

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

Сообщений: 339


« Ответ #383 : 25 июня 2012, 00:50:39 »

можно ли создать какой-нибудь скрипт который бы при окончании загрузки файла HC (100% высвечивается в мониторе), разрывал соединение с клиентом?
Нет. Попробуй последние версии HC&OE, сделай ограничение 5 одновременных потоков.
Сообщить модератору   Записан
alex77
Старожил
****

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

Сообщений: 482



« Ответ #384 : 25 июня 2012, 02:44:48 »

Заметил такую вещь, если качать сайт с помощью Offline Explorer'a через HC, то в случае если файлы не берутся из кеша, то после загрузки HC в OE закачки некоторое время продолжают висеть, если берётся непосредственно из кеша то всё окей. Также всё окей если OE берёт напрямую их интернета. Можно ускорить переход на загрузку следующего файла если в HC нажать кнопку "разорвать все активные соединения", в этом случае в логе появится строка
"24.06.12 13:24:36,500 # 5979:  Client Disconnection"...

можно ли создать какой-нибудь скрипт который бы при окончании загрузки файла HC (100% высвечивается в мониторе), разрывал соединение с клиентом?
разве это проблема ХК? разрывать соединение после скачивания файла должен ОЕ, а не ХК.
Сообщить модератору   Записан
Zoynels
Новичок
*

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

Сообщений: 42


« Ответ #385 : 25 июня 2012, 05:21:18 »

Нет. Попробуй последние версии HC&OE, сделай ограничение 5 одновременных потоков.
и так последние, а колличество соединений можно ставить даже 1, разницы не будет.

разве это проблема ХК? разрывать соединение после скачивания файла должен ОЕ, а не ХК.
Вот если бы при взятии из интернета напрямую происходило бы то же самое (т.е. в OE висели бы уже загруженные закачки), то тогда бы проблема действительно была бы в OE, а так как такое происходит только если идёт загрузка через HC, то это проблема именно HC. При чём подобное происходит ТОЛЬКО если закачивается из инета, потому что если файл берётся из кеша то всё работает нормально.
Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #386 : 25 июня 2012, 19:46:00 »

Заметил такую вещь, если качать сайт с помощью Offline Explorer'a через HC, то в случае если файлы не берутся из кеша, то после загрузки HC в OE закачки некоторое время продолжают висеть, если берётся непосредственно из кеша то всё окей. Также всё окей если OE берёт напрямую их интернета. Можно ускорить переход на загрузку следующего файла если в HC нажать кнопку "разорвать все активные соединения", в этом случае в логе появится строка
"24.06.12 13:24:36,500 # 5979:  Client Disconnection"...

можно ли создать какой-нибудь скрипт который бы при окончании загрузки файла HC (100% высвечивается в мониторе), разрывал соединение с клиентом?

Сделайте отладочный лог и пришлите его в архиве мне на ящик mai62<>mail.ru. В архив положите также скриншот монитора (важны колонки URL, Правило, Ответ). Если возможно, напишите какие URL остались висеть в OE.
« Последнее редактирование: 25 июня 2012, 20:07:07 от mai62 » Сообщить модератору   Записан
Zoynels
Новичок
*

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

Сообщений: 42


« Ответ #387 : 26 июня 2012, 17:15:56 »

отправил, если нужно что-то ещё буду рад помочь, вот только не уверен что сделал именно отладочный лог.
Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #388 : 27 июня 2012, 17:47:02 »

Получил лог, спасибо. Это расширение должно помочь
Код:
--[[ <HCExtension>
@name          Offline Explorer helper
@author        mai62
@version       0.1
@description   Offline Explorer helper
@event         RequestHeaderReceived/request
</HCExtension> ]]

function request()
local x= hc.request_header
if re.find(x, [[^User-Agent:.*Offline\sExplorer]], 0) and
  not re.find(x, [[^Connection:]], 0) then
  local x = re.replace(x, "(.*)(\r\n\r\n)", "\\1\r\nConnection: Close\r\n\r\n")
  if x then
    hc.request_header= x
  end
  --hc.put_to_log(hc.request_header)
  end
end
Сообщить модератору   Записан
HKLM
Старожил
****

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

Сообщений: 305


« Ответ #389 : 20 июля 2012, 23:32:38 »

Помогите написать расширение для работы с ProxHTTPSProxy в автономном режиме.
В автономном режиме нужно отправлять https запросы браузера, что бы браузер мог получить ответ-редирект от ProxHTTPSProxy.
Еще хорошо бы сделать, что бы расширение не работало, если не включен условный прокси. Конкретное условие(номер строки) или общее.
Сообщить модератору   Записан
HKLM
Старожил
****

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

Сообщений: 305


« Ответ #390 : 22 июля 2012, 12:19:47 »

Такое расширение переключает в онлайн, но поздно. HahdyCache остается offline в момент запроса.
Код:
--[[ <HCExtension>
@name          ProxHTTPSProxy
@author        
@version       0
@description   fgdrhtrdrssrrrrrrrghdddddddf
@rule          ^https://
@event         RequestHeaderReceived/Online
</HCExtension> ]]

function Online()
if hc.offline_on then hc.execute_cmd('OffLine Off')  end
end
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #391 : 22 июля 2012, 13:13:32 »

mai62, имхо, хорошо бы дать возможность расширению возможность переключать автономный режим в рамках запроса.
Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #392 : 22 июля 2012, 13:28:47 »

Используйте вместо автономного режима присвоение hc.action="only_from_cache". Тогда можно будет управлять каждым запросом отдельно.
Добавлено: 22 Июль 2012, 13:22:46

Цитировать
Еще хорошо бы сделать, что бы расширение не работало, если не включен условный прокси.
Вместо использования списка условных прокси можно переправлять запросы через внешний прокси с помощью расширения. Тогда можно будет сохранить нужную другому расширению информацию где-либо или все сделать в одном расширении.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #393 : 22 июля 2012, 15:33:32 »

Цитировать
Используйте вместо автономного режима присвоение hc.action="only_from_cache". Тогда можно будет управлять каждым запросом отдельно.
Задача - влиять на состояние АВТОНОМНОГО РЕЖИМА НС в рамках определенных запросов. Расширению не требуется эмулировать автономный режим, а хочется изменить (в рамках данного запроса) реально установленный режим.
« Последнее редактирование: 22 июля 2012, 15:40:08 от Михаил » Сообщить модератору   Записан
HKLM
Старожил
****

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

Сообщений: 305


« Ответ #394 : 22 июля 2012, 17:07:47 »

Используйте вместо автономного режима присвоение hc.action="only_from_cache". Тогда можно будет управлять каждым запросом отдельно.

Подскажите как прикрутить к расширению (hc.get_keyboard_state(), 'VK_NUMLOCK') Или CapsLock если можно.
Ничего не блокировать если NumLock включен.
Код:
--[[ <HCExtension>
@name          Offline/Online
@author       
@version       
@description   
@rule          ^http://
@event         RequestHeaderReceived/request
</HCExtension> ]]

function request()
  hc.action="only_from_cache"
  hc.monitor_string = hc.monitor_string..'R-Offline'
end
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #395 : 22 июля 2012, 17:27:46 »

Если я правильно помню, hc.get_keyboard_state() выдает, нажата ли клавиша в данный момент. Статус CapsLock или NumLock эта функция по идее не выдаст.
Сообщить модератору   Записан
HKLM
Старожил
****

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

Сообщений: 305


« Ответ #396 : 23 июля 2012, 07:51:57 »

Если я правильно помню, hc.get_keyboard_state() выдает, нажата ли клавиша в данный момент. Статус CapsLock или NumLock эта функция по идее не выдаст.
Тогда, как сделать переключение по нажатию любой клавиши? В Контент Мастере это как-то сделано.

А постоянную индикацию, теоретически, нельзя сделать? Например иконкой в трее или принудительно включать режим CapsLock или с помощью сторонней программы.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #397 : 23 июля 2012, 13:26:28 »

Цитировать
В Контент Мастере это как-то сделано
СМ не может узнать, горит в данный момент CapsLock или нет. Он знает только, нажат ли он в данный момент. Нажатие клавиш фиксирует вспомогательная функция:
Код:
local function keysPressed(keys, kbd_state) -- функция возвращает, нажата ли комбинация клавиш keys (названия клавиш должны быть разделены пробелом) в состоянии клавиатуры kbd_state. Если kbd_state не задано, то функция сама проводит опрос состояния клавиатуры
if not keys then return end
kbd_state = ' '.. (kbd_state or hc.get_keyboard_state()) .. ' '
for key in keys:gmatch('%S+') do
if not kbd_state:find(' ' .. key .. ' ', 1, true) then return end
end
return true
end
Например, узнать, нажаты ли сейчас Ctrl+CapsLock, можно так:
if keysPressed('VK_CONTROL VK_CAPITAL') then ... end
« Последнее редактирование: 23 июля 2012, 13:56:11 от Михаил » Сообщить модератору   Записан
HKLM
Старожил
****

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

Сообщений: 305


« Ответ #398 : 23 июля 2012, 20:21:09 »

Переключения срабатывают, но только после полсотни попыток. Один раз само переключилось, когда я отходил от компа минут на несколько. Почему так?
Код:
--[[ <HCExtension>
@name          Offline2/Online
@author        
@version       0
@description   0
@rule          ^http://
@event         RequestHeaderReceived/request
</HCExtension> ]]

local function keysPressed(keys, kbd_state) -- функция возвращает, нажата ли комбинация клавиш keys (названия клавиш должны быть разделены пробелом) в состоянии клавиатуры kbd_state. Если kbd_state не задано, то функция сама проводит опрос состояния клавиатуры
if not keys then return end
kbd_state = ' '.. (kbd_state or hc.get_keyboard_state()) .. ' '
for key in keys:gmatch('%S+') do
if not kbd_state:find(' ' .. key .. ' ', 1, true) then return end
end
return true
end

if keysPressed('VK_CONTROL VK_CAPITAL') then
  function request()
    hc.action="only_from_cache"
    hc.monitor_string = hc.monitor_string..'R-Offline'
  end
end
Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #399 : 23 июля 2012, 23:04:12 »

Написал функцию в dll для запроса состояния клавиши. Пример использования в архиве.
Добавлено: 23 Июль 2012, 22:57:48

dll нужно положить в папку с НС и LuaTest, если он используется.
Добавлено: 23 Июль 2012, 22:58:42

Исходники dll на случай, если кто-то захочет свою dll написать.

* keyboard.zip (56.73 Кб - загружено 42 раз.)
* keyboard_src.zip (32.13 Кб - загружено 50 раз.)
Сообщить модератору   Записан
Страниц: 1 ... 18 19 [20] 21 22 ... 29   Вверх
  Отправить эту тему    Печать  

 
Перейти в: