From 6e209b4e365a613a926c9617011729b688c01409 Mon Sep 17 00:00:00 2001 From: Sveinbjorn Thordarson Date: Tue, 21 May 2013 02:09:17 +0000 Subject: [PATCH] Fixed strange issue with decoded_content --- perl/DataURL/CSS.pm | 17 ++++++++++++++--- update_deployment.sh | 2 +- web/cgi-bin/dataurl.pl | 14 ++++++++++---- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/perl/DataURL/CSS.pm b/perl/DataURL/CSS.pm index 776b264..91b290d 100644 --- a/perl/DataURL/CSS.pm +++ b/perl/DataURL/CSS.pm @@ -56,17 +56,27 @@ sub optimize } my $css_size = $response->header('content-length'); - if ($css_size > $max_css_size) + if ($css_size && $css_size > $max_css_size) { return _error("CSS size ($css_size) exceeds maximum ($max_css_size)"); } - + # OK, the file seems fine. Let's fetch it properly using GET. $request = HTTP::Request->new(GET => $css_url); $response = $ua->request($request); + if (!$response->is_success) + { + return _error("Failed to fetch CSS document. Status: " . $response->status_line); + } + # Get content - my $css = $response->decoded_content(); + my $css = $response->content(); + + if (!length($css)) + { + return _error("Remote file is empty. Status: " . $response->status_line); + } # Find and clean all strings contained within url() my (@matches) = $css =~ m/url\s?\(\s?"?'?(\s?.+\s?)'?"?\)/ig; @@ -280,6 +290,7 @@ sub _error { my ($msg) = @_; my %reply = ( 'error' => $msg ); + warn($msg); return \%reply; } diff --git a/update_deployment.sh b/update_deployment.sh index 662ec07..7c78d61 100755 --- a/update_deployment.sh +++ b/update_deployment.sh @@ -1,6 +1,6 @@ #!/bin/sh -rsync -az --progress -rvv --force web/* root@dataurl.net:/www/dataurl +rsync -az --progress -rvv --exclude web/tmp/log.db --force web/* root@dataurl.net:/www/dataurl rsync -az --progress -rvv --force perl/* root@dataurl.net:/www/dataurl/cgi-bin/ # Use minifier script to minify HTML diff --git a/web/cgi-bin/dataurl.pl b/web/cgi-bin/dataurl.pl index cf5a1a5..ba4020c 100755 --- a/web/cgi-bin/dataurl.pl +++ b/web/cgi-bin/dataurl.pl @@ -14,17 +14,22 @@ use Data::Validate::URI qw(is_http_uri is_https_uri); use SQLiteLogger; +use vars qw($logdb $tmp_public_dir); # Shared dictionary of databases + + my $dataurlmaker_hardlimit = 250 * 1024; -my $tmp_public_dir = '/www/dataurl/html/tmp/'; +$tmp_public_dir = '/www/dataurl/html/tmp/'; + -use vars qw($logdb); # Shared dictionary of databases -if (!defined($logdb)) +if (!$logdb) { $logdb = new SQLiteLogger; - if (!$logdb) { error("Could not connect to database.", '200 OK'); } } +if (!$logdb) { error("Could not connect to database.", '200 OK'); } + + local our $remote_ip = $ENV{'REMOTE_ADDR'}; local our $user_agent = $ENV{'HTTP_USER_AGENT'}; @@ -119,6 +124,7 @@ sub reply print "Status: $status\n"; print STDOUT "Content-Type: application/json\n\n"; print STDOUT $json; + $logdb->Log($status, defined($hashref->{error}), time(), $remote_ip, $json); exit(0);