Line # Revision Author
1 8 ahitrov@rambler.ru package Utils::ProxyImage;
2
3 use strict;
4 use Digest::MD5 'md5_hex';
5
6 sub get_uri {
7 my $url = shift;
8 my $state = shift;
9 my $format = shift;
10
11 return '/i/_.gif' unless $format;
12
13 my $secret = $state->proxy_image_secret || 're2anteros';
14
15 if ($url =~ /^https?:\/\/(.*)/i) {
16 $url = $1;
17 } else {
18 return '/i/_.gif';
19 }
20
21 $url =~ s/\/+/\//g;
22
23 my $hash = md5_hex($url.$secret);
24
25 $url = '/'.$format.'/'.$hash.'/'.$url;
26 return $state->httpd_root.$state->proxy_image_location.$url;
27 }
28
29 1;
30
31 __DATA__
32
33 Утилита для формирования URI картинки через proxy image
34
35 Для начала должен быть сделан соответсвующий location в ngnix, который ссылается на проксирующие сервера картинок
36 например так:
37
38 location /proxy-image/ {
39 proxy_pass http://imgproxy_upstream/;
40 proxy_set_header Host i1.rambler.ru;
41 proxy_cache cache;
42 proxy_cache_valid 24h;
43 proxy_cache_use_stale error timeout;
44 }
45
46 !!!Важно!!! Не нужно в location запихивать и размер, размер мы определяем параметром $format при вызове метода
47
48 в config.mk проекта добалены 2 новые переменные:
49
50 PROXY_IMAGE_LOCATION = [собственно наш location]
51 PROXY_IMAGE_SECRET = [секретное слово для формирования md5]
52
53 Вызывает так:
54
55 use Utils::ProxyImage;
56
57 my $proxy_uri = Utils::ProxyImage::get_uri($url, $state, $format);
58
59 где:
60 $uri - родной uri картинки;
61 $state - $state Contenido
62 $format - формат, суффикс. e.q. 'c70x70'

Небольшая справка по веткам

cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.

koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.

utf8 – актуальная ветка, заточенная под UTF-8.

Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.