LINUX.ORG.RU
ФорумAdmin

Squid и redirect'ор


0

0

Нужно вот что сделать. Настроен squid с авторизацией пользователей. Нужно с помощью редиректора пользователей из файла exceeds.asq при попытке зайти на какой-нибудь сайт отправлять на сайт на серваке с надписью об исчерпанном лимите. Если я использую $error_message="http://www.linux.org.ru", то все работает нормально. Но если я пишу например $error_message="http://192.168.0.1/limit", то мне вылезает ошибка dns, если пишу $error_message="http://127.0.0.1/limit", то тоже не работает, выдает страница не найдена. Но если с машины пользователя зайти на http://192.168.0.1/limit, то страничка открывается без проблем. В настройках на машине клиента настроено не использовать прокси при доступе к 192.168.0.1. Файрвол пробовал совсем отключать, все равно не заработало. Подскажите где я накосячил? #!/usr/bin/perl $error_message="http://192.168.0.1/limit"; $|=1; while (<>) { @X = split; $url = $X[0]; $url_user = $X[2]; open(F_EXC,"/usr/local/asquila/exceeds.asq"); while(<F_EXC>){ chomp; $exc_user=$_; if ($exc_user eq $url_user){ $url=$error_message; } } close(F_EXC); print "$url\n"; }

anonymous

А не подойдет ли вам простое решение с помощью директивы deny_info ?
Т.е. если user входит в такой-то acl, то доступ запретить и выдать такую-то страничку.

spirit ★★★★★
()
Ответ на: комментарий от spirit

Нет. Мне нужно именно, так как описано. Так как на локальную страничку с отображением лимит исчерпан должны попадать пользователи у которых лимит исчерпался!

anonymous
()

Ну правильно, создаете специальный acl с такими пользователями, делаете ему http_access deny, а потом в deny_info указываете, что если произошел запрет доступа на этом acl-е - выдать такую-то страничку, если же запрет будет на других acl-ях - можно поставить другой deny_info.
Кусок моего squid.conf:
...
acl valid_users proxy_auth REQUIRED
acl limited_users proxy_auth "/usr/local/squid/etc/acls/limit-exceeded"
# ACL чисто для того, чтоб был типа "proxy_auth",
# но не содержал ни одного настоящего user-а (для deny_info про ERR_BAD_PASSWORD)
acl nullacl proxy_auth non_existing_user

# "http_access deny nullacl" нужен для определения причины:
# "incorrect login/password" или user просто ЗАПРЕЩЕН.
# Когда squid дойдет до этого http_access, он спросит login/password,
# если они будут не правильные - DENY будет на этом acl,
# если же user просто отключен (другими acl-ями) - DENY будет на других.
# Таким образом в deny_info можно точно сказать
# какая именно причина запрета (какой acl запретил).
#
# DENY этому несуществующему user-у ! :-)
http_access deny nullacl
http_access deny limited_users
http_access allow valid_users
http_access deny all

deny_info ERR_BAD_PASSWORD nullacl
deny_info ERR_LIMIT_EXCEEDED limited_users
deny_info ERR_ACCESS_DENIED all
...
Это одно, а второе - можно в этой самой (выдаваемой deny-info) страничке поставить пересылку на другую (каким-нибудь OnLoad JavaScript-ом или META HTTP-EQUIV="Refresh",....).

Хотя, если вам нужно именно так, как вы хотите сделать, то.... :-))

spirit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.