diff --git a/cdn/Dockerfile b/cdn/Dockerfile new file mode 100644 index 0000000..e245810 --- /dev/null +++ b/cdn/Dockerfile @@ -0,0 +1,10 @@ +FROM httpd:2.4.61 + +RUN apt-get update \ + && apt-get install -y libcgi-pm-perl \ + && rm -rf /var/lib/apt/lists/* + +COPY rwmap.pl /usr/local/bin/ +RUN chmod +x /usr/local/bin/rwmap.pl + +RUN echo "IncludeOptional conf.d/*.conf" >> conf/httpd.conf diff --git a/cdn/rwmap.pl b/cdn/rwmap.pl new file mode 100755 index 0000000..23a5657 --- /dev/null +++ b/cdn/rwmap.pl @@ -0,0 +1,26 @@ +#!/usr/bin/perl +use strict; +use warnings; +use Digest::SHA qw(sha1_hex); +# Desactiva el buffering de salida para que Apache pueda obtener la respuesta inmediatamente +$| = 1; + +while () { + chomp; + my $input = $_; + $input =~ /^\/image\/(.*)\/([a-z0-9-_]+)\.(png)$/; + my $collection = $1; + my $name = $2; + my $extension = $3; + + 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"; + + if (-e "/usr/local/apache2/htdocs/$newPath") { + print "/$newPath\n"; + } else { + print "/$input\n"; + } +}