-- if re.find(hc.request_header, [[^Accept: text/html,]]) then return end
s = re.find(s, [[^http://([^/]+\.)?([^/.]+)(\.\w+)(:\d+)?/]])
-- Меняем \w на [^/] для работы с доменами в puny-коде [+] s = re.find(s, [[^http://([^/]+\.)?([^/.]+)(\.[^/]+)(:\d+)?/]])
-- Выделяем из ссылок домены 2-го уровня local ref_host = GetHost(ref) local url_host = GetHost(UnifyURL(hc.url))
-- Выделяем Url из заголовка запроса [+] local function GetUrl(s) s = re.find(s, [[^GET *(\S+)]], 1) if s then s = string.lower(s) end return s end -- Забираем Url из заголовка запроса [+] local url = UnifyURL(GetUrl(hc.request_header)) -- Выделяем из ссылок домены 2-го уровня local ref_host = GetHost(ref)-- local url_host = GetHost(UnifyURL(hc.url)) -- "Отключаем" данную строку, local url_host = GetHost(url) -- взамен "подключаем" эту [+]
hc.answer_body = hc.last_part and '' or Data
--[[ <HCExtension>@name ### Temp ###@event RequestHeaderReceived/T001</HCExtension> ]]function body() hc.put_to_log('#body\r\n'..hc.answer_body)endfunction T001() hc.action = 'stop' hc.call_me_for('BeforeAnswerBodySend', 'body')end
07.02.13 13:30:39,168 # 375 -=< MESSAGE FROM EXTENSION >=- D:\HandyCache\Extensions\Temp.lua#body<HTML><HEAD><TITLE>Blocked</TITLE></HEAD><BODY><H1>Blocked</H1>Access to the requested URL <B>http://handycache.ru/</B> was not allowed (request script).</BODY></HTML>07.02.13 13:30:39,469 # 375 -=< MESSAGE FROM EXTENSION >=- D:\HandyCache\Extensions\Temp.lua#body
07.02.13 13:30:57,705 # 375 -=< MESSAGE FROM EXTENSION >=- D:\HandyCache\Extensions\Temp.lua#body‰PNG07.02.13 13:30:57,715 # 375 -=< MESSAGE FROM EXTENSION >=- D:\HandyCache\Extensions\Temp.lua#body
hc.call_me_for('BeforeAnswerBodySend', 'body')
-- Помечаем заблокированное вставкой своей строки в заголовок запроса [+] hc.request_header = re.replace(hc.request_header, [[\A]], 'HandyCache/R-ext\r\n')
-- Проверям отметку о блокировке, и если есть, то [+] if re.find(hc.request_header, 'HandyCache/R-ext') then -- изменяем заголовок ответа, с указанием типа контента hc.answer_header = re.replace(hc.answer_header, [[.*]], 'HTTP/1.1 430 lock (R-ext)\r\nConnection: Close\r\nContent-Type: image/png\r\n\r\n') -- задаём обработчик для подмены тела ответа hc.call_me_for('BeforeAnswerBodySend', 'BodyExt') end
-- Забираем Referer из заголовков запроса local ref = UnifyURL(GetReferer(hc.request_header)) -- Получаем Referer из строки монитора [+] -- Для работы с доменами в puny-коде следует закомментировать -- предидущую строку кода и расскоментировать следующую*-- if hc.monitor_parent_url=='' then return end local ref = UnifyURL(string.lower(hc.monitor_parent_url)) -- * После этого в списках исключений для национальных доменов следует использовать -- язык локали, если для puny-кода включена соответствующая опция HC, -- или puny-код, если она выключена
BAHS-SCRIPT "AnswerSend" ERROR: [string "--[[ <HCExtension>..."]:194: attempt to index field 'Options' (a nil value)