Проверка заголовка перед выдачей и подсчет трафика после, Николай, 20-Мрт-08, 16:29 [смотреть все]Уважаемые знатоки! очень срочно (готов отплатить пивом :) ) нужно сделать такое: FreeBSD 7. Есть VPN-соединение. Пользователи обращаются к нашему прокси-серверу в поисках интернета. В заголовках запроса присутствует дополнительная строчка - счет клиента. Подскажите, пожалуйста, есть ли какая-либо возможность запускать скрипт, который смотрит заголовок, проверяет номер (ищет в своей БД), возвращает "добро" или "зло". Злом в этом случае будет страничка с напоминанием об оплате. Кроме того, после выдачи нужно опять обращаться к скрипту, чтобы он этот трафик пересчитал и в базе вычел денежку у этого пользователя.
Если не squid - то может быть кто-то еще может это делать? Говорят, через Апачи можно что-то сделать. Но запросов будет более 100 в секунду - вряд ли он выдержит, тем более с дополнительными запусками программ. Веб-сервер всё равно какой-то будет (склоняюсь к lighttpd), так что его тоже можно использовать. В сквиде (2.6) есть url_rewrite_program, но заголовки туда не передаются, а значит параметр для меня бесполезен... Спасибо большое, с уважением, Николай
|
- Проверка заголовка перед, Andrey Mitrofanov, 18:45 , 20-Мрт-08 (1)
>очень срочно (готов отплатить пивом :) ) нужно сделать такое: >FreeBSD 7. Есть VPN-соединение. Пользователи обращаются к нашему прокси-серверу в поисках интернета. >В заголовках запроса присутствует дополнительная строчка - счет клиента. А зачем? Во-первых, подделывается на раз, в во-вторых, не проще ли на VPN-е по логину раздавать каждому свой ip и по нему "рулить" в сквиде, при исчерпании счёта, например, выдавать другой ip, которому показывать только статистику.... >Подскажите, пожалуйста, есть ли какая-либо возможность запускать скрипт, который смотрит заголовок, проверяет >номер (ищет в своей БД), возвращает "добро" или "зло". Если штатные методы auth не устраивают, то при такой постановке задачи external_acl_type + соотв.скрипт клепать... > Злом в этом случае будет страничка с напоминанием об оплате. ...ну, сообщение об ошибке с редиректом, может быть. >Кроме того, после выдачи нужно опять обращаться к скрипту, чтобы он этот >трафик пересчитал и в базе вычел денежку у этого пользователя. это уже билинг какой-то = не сквид. >Если не squid - то может быть кто-то еще может это делать? > >Говорят, через Апачи можно что-то сделать. Но запросов будет более 100 в >секунду - вряд ли он выдержит, тем более с дополнительными запусками В сквиде запросы к auth-хелперам кешируются, насколько я понимаю. То есть дёргать скрипт сквид будет не на каждое обращение... если повезёт... >В сквиде (2.6) есть url_rewrite_program, но заголовки туда не передаются, а значит >параметр для меня бесполезен... Значит так: берёшь /usr/share/doc/squid/examples/squid.conf (или где оно у вас "там") и смотришь на external_acl_type, радуешься, идёшь на google.ru = задаёшь вопросы (squid external_acl_type site:opennet.ru)...
- +об external_acl_type, Andrey Mitrofanov, 19:09 , 20-Мрт-08 (2)
>external_acl_type + соотв.скрипт клепать... > >В сквиде запросы к auth-хелперам кешируются, насколько я понимаю. То есть >дёргать скрипт сквид будет не на каждое обращение... если повезёт... > >на external_acl_type, радуешься, идёшь на google.ru = задаёшь вопросы (squid external_acl_type >site:opennet.ru)... Вот тут как это выглядит примерно: http://opennet.ru/tips/info/1378.shtml (без редиректов, статистики, со скриптом и обсуждением кеширования ответов).
- +об external_acl_type, Николай, 12:29 , 21-Мрт-08 (3)
>>external_acl_type + соотв.скрипт клепать... >> >>В сквиде запросы к auth-хелперам кешируются, насколько я понимаю. То есть >>дёргать скрипт сквид будет не на каждое обращение... если повезёт... >> >>на external_acl_type, радуешься, идёшь на google.ru = задаёшь вопросы (squid external_acl_type >>site:opennet.ru)... > >Вот тут как это выглядит примерно: http://opennet.ru/tips/info/1378.shtml >(без редиректов, статистики, со скриптом и обсуждением кеширования ответов). Спасибо за ответы! У меня возникли проблемы с external_acl_type - squid пишет, что дети хелпера быстро убиваются. Уже ставил children=50 - то же самое. Сейчас сделал заглушку, возвращающую (пока эта ошибка не возникает) OK сразу (ну и в логи пишет обращения). Однако есть еще одна проблема. Придется подробнее описать, зачем мне это нужно (сначала не хотел грузить вас подробностями). Итак, есть ВПН с мобильными клиентами. У клиентов динамические IP. Мой сервер выступает для доступа в интернет. Клиентов по IP разграничить невозможно, нужно из заголовков запроса вытаскивать MSISDN, искать его в базе клиентов, определять, есть ли доступ, потом отдавать ему трафик или посылать на страницу с оплатой. Клиентов, которых вообще нет в базе - вообще посылать куда-то в третье место :) Итак, проблема - кеширование мешает разумно считать трафик, так как нам всё равно, сколько наш сервер берет из интернета, а вот сколько клиентам отдается - важно. Смотрел несколько биллинговых систем - не видел ни одной, чтобы позволяла на основании хидеров пользователей разграничивать - только по IP максимум по маку. Как вариант - использование mod_rewrite + mod_proxy Apache, но, боюсь, при большом количестве клиентов такое решение рухнет. Любые идеи приветствуются!! Количество серваков для системы - 2 шт Пожалуйста, помогите - в долгу не останусь, обещаю. Любая работа оплачивается, консультационная конечно тоже, если поможет. Спасибо еще раз!
- +об external_acl_type, idle, 16:36 , 21-Мрт-08 (4)
>[оверквотинг удален] >(сначала не хотел грузить вас подробностями). >Итак, есть ВПН с мобильными клиентами. У клиентов динамические IP. Мой сервер >выступает для доступа в интернет. Клиентов по IP разграничить невозможно, нужно >из заголовков запроса вытаскивать MSISDN, искать его в базе клиентов, определять, >есть ли доступ, потом отдавать ему трафик или посылать на страницу >с оплатой. Клиентов, которых вообще нет в базе - вообще посылать >куда-то в третье место :) >Итак, проблема - кеширование мешает разумно считать трафик, так как нам всё >равно, сколько наш сервер берет из интернета, а вот сколько клиентам >отдается - важно. Из логов сквида можно всё посчитать и кэшируемый, и общий. >Смотрел несколько биллинговых систем - не видел ни одной, чтобы позволяла на >основании хидеров пользователей разграничивать - только по IP максимум по маку. Не совсем понятно при чём здесь биллинговые системы, но говоря о сквиде - он может разграничивать клиентов, как угодно, и по хидерам тоже.
|