generate lighttpd secdownload links
authorDobrica Pavlinusic <dpavlin@rsync1.maxxo.com>
Fri, 11 May 2012 16:23:06 +0000 (18:23 +0200)
committerDobrica Pavlinusic <dpavlin@rsync1.maxxo.com>
Fri, 11 May 2012 16:23:06 +0000 (18:23 +0200)
bin/lighttpd-secdownload.pl [new file with mode: 0755]

diff --git a/bin/lighttpd-secdownload.pl b/bin/lighttpd-secdownload.pl
new file mode 100755 (executable)
index 0000000..62498ab
--- /dev/null
@@ -0,0 +1,36 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use autodie;
+
+# ./lighttpd-secdownload.pl ~u2001/foo.txt | xargs -i HEAD -u http://localhost{}
+
+use Digest::MD5 qw(md5 md5_hex md5_base64);
+use Data::Dump qw(dump);
+
+my $config;
+
+open(my $secdownload_conf, '<', '/etc/lighttpd/conf-enabled/90-secdownload.conf');
+while(<$secdownload_conf>) {
+       chomp;
+       my ( $n, $v ) = split(/\s+=\s+/);
+       $v =~ s/^"//;
+       $v =~ s/"$//;
+       $config->{$n} = $v;
+}
+
+warn "# config ",dump($config);
+
+foreach my $path ( @ARGV ) {
+
+       $path =~ s{^.*?(/\d\d\d\d/)}{$1}; # cleanup path prefix
+
+       my $t_hex = sprintf('%08x', time() );
+       my $md5_hex = md5_hex($config->{'secdownload.secret'}.$path.$t_hex);
+
+       my $link = $config->{'secdownload.uri-prefix'} . $md5_hex . '/' . $t_hex . $path;
+       print $ENV{HTML} ? qq|<a href=$link>$path</a>\n| : "$link\n";
+
+}
+
+