Назад | Перейти на главную страницу

Как именно написать программу Squid url_rewrite_program?

Кальмаров url_rewrite_program директива имеет расплывчатую документацию. В нем говорится, что рассматриваемая программа должна принимать "формат", описанный как:

[channel-ID <SP>] URL [<SP> extras]<NL>

Эту строку можно интерпретировать двояко:

  1. идентификатор канала и следующие <SP> будет заключен в квадратные скобки вместе с дополнительные услуги строка потом.
  2. идентификатор канала и дополнительные услуги являются ДОПОЛНИТЕЛЬНЫМИ. Иногда они будут предоставлены, иногда нет.

Я подозреваю (но не могу быть уверен), что №2 - правильная интерпретация, поскольку есть примечание, в котором мне предлагается поискать где-нибудь еще, чтобы узнать, как «отправлять вспомогательные данные с необязательными значениями». Меня не особо интересуют статисты. Все, что мне действительно нужно, это URL.

Нет документации, описывающей, как контролировать отправку необязательных полей, и это плохо, потому что единственное обязательное поле находится в средний. Вы можете определить, какое поле является каким, только попытавшись проанализировать их как каналы, URL-адреса и «дополнительные».

Но формат «канал» и «дополнительный» также не описан в документации к url_rewrite_program, и я скорее буду читать исходный код, чем просматривать документацию по всем остальным, не относящимся к делу параметрам. Может быть, было бы быстрее написать HTTP-прокси с нуля, чем пытаться разобраться в файле конфигурации достаточно, чтобы заставить работать этот единственный вариант.

Очевидно, действительно важно распознать, когда был предоставлен идентификатор канала, поскольку требуется, чтобы эта строка отображалась эхом для всех запросов, у которых он есть.

Может ли кто-нибудь прояснить мне, как должна работать url_rewrite_program?