URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID12
Нить номер: 3615
[ Назад ]

Исходное сообщение
"Задача не пускать большие файлы через parentproxy"

Отправлено napTu , 20-Окт-05 14:32 
Есть следующая задача:
наземный канал, роутер со сквидом, спутниковый канал на отдельном прокси.
Необходимо ограничить размер файлов (не более чем Х кбайт) через спутник и пускать их по земле.
На данный момент спутниковый прокси стоит как parent для сквида и на этот parent пропускается весь трафик не соответствующий мультимедийным расширениям:
acl localnet ...
acl media urlpath_regex -i /.avi$ ...
cache_peer_access deny media
cache_peer_access allow localnet
cache_peer_access deny all

Для более надежной защиты от большого (и дорогого) трафика через спутник я пробовал использовать
reply_body_max_size 512000 deny media
#^^не ограничивать для всех мултимедиа файлов, т.к. они и так идут по земле
reply_body_max_size 512000 allow localnet
#^^ограничить размер остального трафика, который направляется через спутник.
НО ТАКАЯ конструкция не работает! ограничение срабатывает в любом случае, на все файлы, если в любом месте есть строка allow localnet, даже так:
reply_body_max_size 512000 deny all
reply_body_max_size 512000 allow localnet
reply_body_max_size 512000 deny all
Кто нибуть знает почему так и как это обойти?
На данный момент я сделал так:
reply_body_max_size 512000 allow !media

Получается что любой НЕ медиа файл размером более 512000 запрещен для загрузки в любом случае.
Задача состоит в разрешении файлов более 512000 ходить по земле, и не ходить через спутник.
Как это реализовать???


Содержание

Сообщения в этом обсуждении
"Задача не пускать большие файлы через parentproxy"
Отправлено napTu , 20-Окт-05 14:38 
другими словами, как указать в acl максимальный размер файла?

"Задача не пускать большие файлы через parentproxy"
Отправлено napTu , 20-Окт-05 15:25 
вот что я нашел похожее по этому поводу,
но непонятно как это применить для reply_body вместо request_body

On Mon, 26 Apr 2004, Michael Gale wrote:

> Can I use "request_body_max_size" inside a acl ?

There only is one single limit in this directive.

But it is possible to invent a new acl for this using the external acl
interface. request_body_max_size looks into the Content-Length request
header, available to external_acl_type as %{Content-Length}


This silly shell script should work

#!/bin/sh
while read line; do
  set -- $line
  length="$1"
  limit="$2"
  if [ "$length" -le "$2" ]; then
     echo OK
  else
     echo ERR
  fi
done


Use this as

external_acl_type request_body %{Content-Length} /path/to/above/script

acl request_max_20MB request_body 20971520


This acl can then be used in http_access to match requests up to the given
size. If you need different sizes just define new acls with different
limits in bytes (20971520 == 20480 * 1024 == 20480 KB)

Regards
Henrik