diff --git a/cdn/Dockerfile b/cdn/Dockerfile index 055ca85..2c760ee 100644 --- a/cdn/Dockerfile +++ b/cdn/Dockerfile @@ -1,20 +1,10 @@ -FROM httpd:2.4.60 +FROM httpd:2.4.61 RUN apt-get update \ && apt-get install -y curl libcgi-pm-perl \ && rm -rf /var/lib/apt/lists/* -RUN echo "ServerName localhost\n" \ - "Include conf/extra/httpd-vhosts.conf\n" \ - "LoadModule rewrite_module modules/mod_rewrite.so\n" \ - "LoadModule cgid_module modules/mod_cgid.so\n" \ - "LoadModule proxy_module modules/mod_proxy.so\n" \ - "LoadModule proxy_http_module modules/mod_proxy_http.so" \ - >> "/usr/local/apache2/conf/httpd.conf" +COPY www/rwmap.pl /usr/local/bin/ +RUN chmod +x /usr/local/bin/rwmap.pl -COPY apache2.conf /usr/local/apache2/conf/extra/httpd-vhosts.conf - -COPY rwmap.pl /usr/local/apache2/htdocs/ -RUN chmod +x /usr/local/apache2/htdocs/rwmap.pl - -CMD ["httpd-foreground"] +RUN echo "IncludeOptional conf.d/*.conf" >> conf/httpd.conf diff --git a/cdn/apache2.conf b/cdn/apache2.conf deleted file mode 100644 index c685548..0000000 --- a/cdn/apache2.conf +++ /dev/null @@ -1,18 +0,0 @@ - - DocumentRoot /usr/local/apache2/htdocs - - RewriteEngine On - RewriteMap rwmap prg:/usr/local/apache2/htdocs/rwmap.pl - RewriteRule ^/image/catalog/(.+)$ ${rwmap:$1} [PT,QSA] - - - Require all granted - - - - Options Indexes FollowSymLinks ExecCGI - AllowOverride All - Require all granted - AddHandler cgi-script .pl - - \ No newline at end of file diff --git a/cdn/rwmap.pl b/cdn/rwmap.pl index c150734..0c811cc 100755 --- a/cdn/rwmap.pl +++ b/cdn/rwmap.pl @@ -4,32 +4,23 @@ use warnings; use Digest::SHA qw(sha1_hex); # Desactiva el buffering de salida para que Apache pueda obtener la respuesta inmediatamente $| = 1; -my $serverName = $ENV{'SERVER_NAME'} || 'localhost'; -my $serverPort = $ENV{'SERVER_PORT'} || '80'; -my $scheme = ($serverPort == 443) ? 'https' : 'http'; -my $baseUrl = "$scheme://$serverName"; -$baseUrl .= ":$serverPort" if ($serverPort != 80 && $serverPort != 443); while () { chomp; my $input = $_; - my ($path, $filename) = split('/', $input); + $input =~ /^\/image\/(.*)\/([a-z0-9-_]+)\.(png)$/; + my $collection = $1; + my $name = $2; + my $extension = $3; - if (defined $filename && $filename =~ /^(.+)\.(\w+)$/) { - my $name = $1; - my $extension = $2; + my $sha1 = sha1_hex($name); + my $first = substr($sha1, 0, 2); + my $last = substr($sha1, 1, 2); + my $newPath = "images/$collection/$first/$last/$name.$extension"; - my $sha1 = sha1_hex($name); - my $first = substr($sha1, 0, 2); - my $last = substr($sha1, 1, 2); - - if (-e "images/catalog/$path/$first/$last/$name.$extension") { - print "$baseUrl/images/catalog/$path/$first/$last/$name.$extension\n"; - } - else { - print "$baseUrl/images/catalog/$path/$name.$extension\n"; - } + if (-e "/usr/local/apache2/htdocs/$newPath") { + print "/$newPath\n"; } else { - print "Status: 400 Bad Request\n"; + print "/image/$input\n"; } }