Постановка задачи:
Организовать перенаправление пользователей халявного WiFi на информационную страничку. При этом необходимо показывать информационную страницу только раз за сессию.
Решение:
В сети уже использовался прозрачный прокси Squid и в нём был интересующий меня функционал. Версия сквида 3.1.10, самая свежая из стабильных. Настройка производилась по этому мануалу http://wiki.squid-cache.org/ConfigExamples/Portal/Splash.
При проверке примера столкнулся с проблемой: сайт указанный в директиве deny_info, не открывался как я этого ожидал, а постоянно редиректился сам на себя. Природу этой проблемы я так и не выяснил, но возможно позже разберусь и дополню.
В противоположность внешним сайтам, страницы ,сохранённые на прокси локально открывались как и обещано в мануале. Из этого родился костыль, в локальную страницу помещался однострочник на яваскрипт, перенаправляющий пользователей на необходимый ресурс.
setTimeout(location.replace("http://exempl.ru"),1000);как вариант можно ещё так, этот вариант лучше воспринимается iУстройствами
<meta http-equiv="refresh" content="1;URL='http://exampl.ru/'">
Можно заметить что указан таймаут в 1 секунду. Это то же от не знания как решить проблему. По идее задержка должна регулироваться в дерективе
external_acl_type splash_page ipv4 ttl=6 concurrency=200 %SRC /usr/lib64/squid/squid_session -t 7200а именно ttl=0, но даже при значении 0 пользователь вынужден ждать минимум секунду, всё это время происходит постоянный редирект, то есть страница постоянно обновляется. Выглядит это не красиво и рас уж нельзя отказаться от ожидания, пусть лучше пользователь видит пустую страницу.
Комментариев нет:
Отправить комментарий