Главная
Форум
Контакты
Купить
Поддержи проект
Поиск
Искать:
Расширенный поиск
[Закрыть]
Правила форума
Войти
Регистрация
Russian
English
HandyCache форум
Главная категория
»
Общие вопросы
»
403 заменить на свою
Имя пользователя:
1 час
1 день
1 неделя
1 месяц
Навсегда
Пароль:
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Отправить эту тему
Печать
Автор
Тема: 403 заменить на свою (Прочитано 8750 раз)
0 Пользователей и 1 Гость смотрят эту тему.
DIGGER
Старожил
Репутация: +14/-3
Offline
Сообщений: 312
403 заменить на свою
«
:
25 декабря 2010, 17:23:36 »
Нужно заменить страничку ответа 403 на свою. Как быть? Если HC не умеет, то можно расширение написать?
Я так думаю писать для HC такого рода расширение не трудно, но я не в теме, может кто подсказать общий шаблон?
Сообщить модератору
Записан
mai62
Автор HC
Репутация: +226/-4
Offline
Сообщений: 6383
Re: 403 заменить на свою
«
Ответ #1 :
25 декабря 2010, 23:10:20 »
Можно заменить через расширение.
В расширении сделать обработчик события BeforeAnswerHeaderSend. Из переменной hc.answer_header получить заголовок ответа. Посмотреть на него и решить менять ответ или нет. Если надо менять, то переменной hc.answer_header присвоить новый заголовок. Тело ответа можно присвоить переменной hc.answer_body. Подробнее про эти переменные можно прочитать в файле HCExtensions.html (лежит в архиве с дистрибутивом НС).
Сообщить модератору
Записан
DIGGER
Старожил
Репутация: +14/-3
Offline
Сообщений: 312
Re: 403 заменить на свою
«
Ответ #2 :
26 декабря 2010, 02:27:16 »
Спасибо, будем терзать
Upd:
LuaTest.exe : "Access violation at address 00000000. Read of address 00000000."
Куда копать?
«
Последнее редактирование: 26 декабря 2010, 03:04:11 от DIGGER
»
Сообщить модератору
Записан
DIGGER
Старожил
Репутация: +14/-3
Offline
Сообщений: 312
Re: 403 заменить на свою
«
Ответ #3 :
26 декабря 2010, 04:39:36 »
Возможно нужно менять в Header поле "Connection: keep-alive" на что-то другое?
Добавлено: 2010-12-26, 03:43:27
Цитата: DIGGER от 26 декабря 2010, 02:27:16
LuaTest.exe : "Access violation at address 00000000. Read of address 00000000."
Отвечу сам себе
В программе не проверяется загрузка "lua5.1.dll" отсюда и такая ошибка.
Добавлено: 2010-12-26, 04:14:14
Итого, не получается никак изменить тело ответа, делаю так:
Код:
hc.answer_body = 'Доступ запрещён'
и заголовок ответа тоже не получается никак изменить:
Код:
hc.answer_header = re.replace(hc.answer_header, [[^Connection: \K(?!close)[^\r\n]+]], 'close')
hc.answer_header = re.replace(hc.answer_header, [[^Connection: \K[^\r\n]+]], 'Connection: close')
Думаю что ошибка в синтаксисе, но найти не получается.
Сообщить модератору
Записан
mai62
Автор HC
Репутация: +226/-4
Offline
Сообщений: 6383
Re: 403 заменить на свою
«
Ответ #4 :
26 декабря 2010, 12:28:16 »
Надо было показать свое расширение, чтобы можно было посмотреть, что там работает, а что нет.
Сообщить модератору
Записан
DIGGER
Старожил
Репутация: +14/-3
Offline
Сообщений: 312
Re: 403 заменить на свою
«
Ответ #5 :
26 декабря 2010, 16:38:51 »
Да тут-то и показывать нечего:
Код:
function AnswerSend()
re.select_engine(1)
if re.match(hc.answer_header, [[\AHTTP/1\.\d 403]]) then
hc.answer_body = 'Доступ запрещён'
hc.extensions_on = false
hc.repeat_options('request', 0, 0) -- отключение повторных запросов
hc.action = 'stop'
--
hc.monitor_string = 'TEST'
hc.client_disconnect() -- хоть как-то прервать загрузку, это срабатывает как надо
hc.answer_header = re.replace(hc.answer_header, [[\AHTTP/1\.1]], 'HTTP/1.0')
hc.answer_header = re.replace(hc.answer_header, [[^Connection: \K(?!close)[^\r\n]+]], 'close')
hc.answer_header = re.replace(hc.answer_header, [[^Connection: \K[^\r\n]+]], 'Connection: close')
hc.answer_header = re.replace(hc.answer_header, [[^Connection: .]], 'Connection: close')
--
hc.answer_header = 'Accept-Ranges: bytes Content-Length: 15 Connection: close Content-Type: text/html; charset=windows-1251'
end
end
Сообщить модератору
Записан
mai62
Автор HC
Репутация: +226/-4
Offline
Сообщений: 6383
Re: 403 заменить на свою
«
Ответ #6 :
26 декабря 2010, 17:39:37 »
Это все что ли? А где заголовок расширения? Без него обработчик вызываться не будет.
Добавлено: 26 Декабря 2010, 17:24:45
А эти строки зачем? Как правило, они не нужны. Ты их осознанно добавил?
Код:
re.select_engine(1)
Код:
hc.extensions_on = false
hc.repeat_options('request', 0, 0) -- отключение повторных запросов
hc.action = 'stop'
Код:
hc.client_disconnect() -- хоть как-то прервать загрузку, это срабатывает как надо
Добавлено: 26 Декабря 2010, 17:28:42
Расширение должно выглядеть как-то так
Код:
--[[ <HCExtension>
@name My 403
@event BeforeRequestHeaderSend/MyAnswer
</HCExtension> ]]
function GetAnswerCode(s)
_,_,x = string.find(s, "HTTP/1%.%d +(%d+)")
if x==nil then return -1 else return tonumber(x) end
end
function MyAnswer()
if GetAnswerCode(hc.answer_header) == 403 then
hc.answer_header= ...
hc.answer_body= ...
end
end
Сообщить модератору
Записан
DIGGER
Старожил
Репутация: +14/-3
Offline
Сообщений: 312
Re: 403 заменить на свою
«
Ответ #7 :
26 декабря 2010, 18:35:27 »
Цитировать
Это все что ли? А где заголовок расширения? Без него обработчик вызываться не будет.
я наверное не точно выразился, у меня расширение работает, заголовок опустил как само собой разумеющийся, срабатывает обработка на 403 + "re.match(hc.answer_header, [[\AHTTP/1\.\d 403]])" вроде быстрее Вашего варианта с выносом в отдельную функцию.
Без строки: "re.select_engine(1)" не работало! Возможно где-то что-то закэшировалось. т.к. я каждый раз не перезапускал
HC
.
Единственная не решённая трудность возникла с:
Код:
hc.answer_header= ...
hc.answer_body= ...
не присваивается и всё
Потому и писал, что наверное у меня где-то синтаксих хромает.
Цитировать
А эти строки зачем?
Все строки добавлялись осознанно, кроме содержащих RegExp'ы, в них немного плаваю, но вроде правильно синтаксически построил.
"hc.extensions_on = false" — что бы обработка не шла дальше в CM и др. расширения.
"hc.repeat_options('request', 0, 0)" — иначе по 3 запроса + на FavIcon ещё три шло.
" hc.action = 'stop' " — в мануале написано что
HC
должен прекратить дальнейшую обработку, но на деле не увидел.
" hc.client_disconnect() " — поскольку др. способы не работали, то хоть как-то прерывал запросы в инет. Я понимаю что эту строку нужно отключить, когда получится заменять ответ от сервера на свой.
Сейчас у меня только один вопрос: Как заменить страничку ответа на свою? Строка
"
hc.answer_body = 'Доступ запрещён'
"
ни к чему не приводит
«
Последнее редактирование: 26 декабря 2010, 18:43:24 от DIGGER
»
Сообщить модератору
Записан
mai62
Автор HC
Репутация: +226/-4
Offline
Сообщений: 6383
Re: 403 заменить на свою
«
Ответ #8 :
26 декабря 2010, 22:40:11 »
Цитировать
Сейчас у меня только один вопрос: Как заменить страничку ответа на свою?
Вот так:
Код:
--[[ <HCExtension>
@name My 403
@event BeforeAnswerHeaderSend/MyAnswer
</HCExtension> ]]
function GetAnswerCode(s)
_,_,x = string.find(s, "HTTP/1%.%d +(%d+)")
if x==nil then return -1 else return tonumber(x) end
end
function MyAnswer()
if GetAnswerCode(hc.answer_header) == 403 then
hc.answer_header= 'HTTP/1.1 403 Access denied\r\nConnection: close\r\nContent-Type: text\r\n\r\n'
hc.answer_body= 'Доступ запрещён'
end
end
Проверено, работает.
Сообщить модератору
Записан
DIGGER
Старожил
Репутация: +14/-3
Offline
Сообщений: 312
Re: 403 заменить на свою
«
Ответ #9 :
26 декабря 2010, 23:00:01 »
Ваш пример работает, а мой не хотел работать. Строчкой преткновения оказалась
"
hc.extensions_on = false
"
, если её удалить, то мой пример работает. Спасибо за помощь!
Поясню что происходит при обработке
"
hc.extensions_on = false
"
: Браузер показывает что идёт ожидание ответа от прокси,
HC
показывает ответ, но он висит в обработке. Если в браузере нажать
Esc
(прервать загрузку)
, то в логе HC пишется что клиент дисконектед.
Вопрос: как остановить дальнейшую обработку по цепочке др. расширениями?
Сообщить модератору
Записан
mai62
Автор HC
Репутация: +226/-4
Offline
Сообщений: 6383
Re: 403 заменить на свою
«
Ответ #10 :
26 декабря 2010, 23:25:12 »
Цитировать
Вопрос: как остановить дальнейшую обработку по цепочке др. расширениями?
Добавить строку "hc.extensions_on = false". В свое расширение я добавил эту строку, расширение как работало так и работает.
Сообщить модератору
Записан
DIGGER
Старожил
Репутация: +14/-3
Offline
Сообщений: 312
Re: 403 заменить на свою
«
Ответ #11 :
27 декабря 2010, 01:54:30 »
Намёк понял. спасибо. завтра попробую.
Сообщить модератору
Записан
DIGGER
Старожил
Репутация: +14/-3
Offline
Сообщений: 312
Re: 403 заменить на свою
«
Ответ #12 :
27 декабря 2010, 10:30:06 »
при добавлении строки в Ваше расширение
"
hc.extensions_on = false
"
, оно точно так же подвисает как и моё. (Как я описывал выше) Возможно дело в бета версии
HC
, но это смогу проверить только вечером.
Сообщить модератору
Записан
mai62
Автор HC
Репутация: +226/-4
Offline
Сообщений: 6383
Re: 403 заменить на свою
«
Ответ #13 :
27 декабря 2010, 13:09:11 »
Со строкой "hc.extensions_on = false" действительно есть проблемы. Исправлю в следующей версии. Тебе + за найденную ошибку.
Сообщить модератору
Записан
DIGGER
Старожил
Репутация: +14/-3
Offline
Сообщений: 312
Re: 403 заменить на свою
«
Ответ #14 :
27 декабря 2010, 15:09:58 »
Спасибо!
Мне везёт на трудности
(Серьёзно, по жизни, если что может пойти не так — всегда идёт не так. Но я уже привык — просто нужно стараться всё предусмотреть
)
Сообщить модератору
Записан
mai62
Автор HC
Репутация: +226/-4
Offline
Сообщений: 6383
Re: 403 заменить на свою
«
Ответ #15 :
27 декабря 2010, 15:53:13 »
До тебя hc.extensions_on никто не пытался использовать.
(А мне иногда кажется, что как только я подумаю о чем-то плохом, так это со мной происходит. Когда мне приходит в голову что-то плохое, плюю три раза через левое плечо. Мне помогает (только бы не сглазить).
)
Сообщить модератору
Записан
Страниц: [
1
]
Вверх
Отправить эту тему
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Главная категория
-----------------------------
=> Общие вопросы
=> Новые предложения
=> Дополнения, плагины
=> Сжатие трафика
=> English forum
=> Indonesian forum
-----------------------------
Гостевая
-----------------------------
=> Гостевая
-----------------------------
Дела домашние
-----------------------------
=> Сайт и форум HandyCache
=> Курилка
© 2006-2014 HandyCache Team. Все права защищены.
Загружается...