diff options
| author | Andreas Brachold <vdr07@deltab.de> | 2007-10-27 14:29:27 +0000 |
|---|---|---|
| committer | Andreas Brachold <vdr07@deltab.de> | 2007-10-27 14:29:27 +0000 |
| commit | 1973a994d9306d206bde1e73e7779a1ca73943c4 (patch) | |
| tree | 60600b8ae0200a633583aa8eedead9ee74fafa8b /lib | |
| parent | 5c70d02c4b72f4a3384d0b053a8f99e894f0b734 (diff) | |
| download | xxv-1973a994d9306d206bde1e73e7779a1ca73943c4.tar.gz xxv-1973a994d9306d206bde1e73e7779a1ca73943c4.tar.bz2 | |
* HTTPD Add method HEAD
* HTTPD(Ajax) Calc sended bytes
* RECORDS: redit - Display warning message if recording none exist
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/XXV/MODULES/HTTPD.pm | 10 | ||||
| -rw-r--r-- | lib/XXV/MODULES/RECORDS.pm | 8 | ||||
| -rw-r--r-- | lib/XXV/OUTPUT/Ajax.pm | 17 | ||||
| -rw-r--r-- | lib/XXV/OUTPUT/Html.pm | 48 |
4 files changed, 51 insertions, 32 deletions
diff --git a/lib/XXV/MODULES/HTTPD.pm b/lib/XXV/MODULES/HTTPD.pm index bfde57a..914bcd7 100644 --- a/lib/XXV/MODULES/HTTPD.pm +++ b/lib/XXV/MODULES/HTTPD.pm @@ -322,10 +322,11 @@ sub communicator if($data->{Query}); $data->{Referer} =~ s/%([a-f0-9][a-f0-9])/pack("C", hex($1))/ieg if($data->{Referer}); - # Log like Apache Format ip, resolved hostname, user, request, status, bytes, referer, useragent - lg sprintf('%s - %s "%s%s" %s %s "%s" "%s"', + # Log like Apache Format ip, resolved hostname, user, method request, status, bytes, referer, useragent + lg sprintf('%s - %s "%s %s%s" %s %s "%s" "%s"', $ip, $data->{username} ? $data->{username} : "-", + $data->{Method}, $data->{Request} ? $data->{Request} : "", $data->{Query} ? "?" . $data->{Query} : "", $console->{'header'}, @@ -400,8 +401,9 @@ sub parseRequest { } $data->{Request} =~ s/%([a-f0-9][a-f0-9])/pack("C", hex($1))/ieg - if($data->{Request}); - if($data->{Method} eq 'GET') { + if($data->{Request}); + if($data->{Method} eq 'GET' + or $data->{Method} eq 'HEAD') { #dumper($data); return $data; } elsif($data->{Method} eq 'POST') { diff --git a/lib/XXV/MODULES/RECORDS.pm b/lib/XXV/MODULES/RECORDS.pm index c39cf96..f0e44c0 100644 --- a/lib/XXV/MODULES/RECORDS.pm +++ b/lib/XXV/MODULES/RECORDS.pm @@ -1534,9 +1534,11 @@ WHERE AND ( r.RecordMD5 = ? ) |; my $sth = $obj->{dbh}->prepare($sql); - $sth->execute($recordid) - or return $console->err(sprintf(gettext("Recording '%s' does not exist in the database!"),$recordid)); - $rec = $sth->fetchrow_hashref(); + if($sth->execute($recordid)) { + $rec = $sth->fetchrow_hashref() + } + return $console->err(sprintf(gettext("Recording '%s' does not exist in the database!"),$recordid)) + unless($rec); } my $file = sprintf("%s/info.vdr", $rec->{Path}); diff --git a/lib/XXV/OUTPUT/Ajax.pm b/lib/XXV/OUTPUT/Ajax.pm index c5ce83d..3c5d6e4 100644 --- a/lib/XXV/OUTPUT/Ajax.pm +++ b/lib/XXV/OUTPUT/Ajax.pm @@ -130,19 +130,26 @@ sub printout { my $obj = shift || return error('No object defined!'); my $nopack = shift || $obj->{nopack} || 0; - - my $content .= ($obj->{outtype} eq 'xml' + my $content; + if($obj->{browser}->{Method} ne 'HEAD') { + $content = ($obj->{outtype} eq 'xml' ? $obj->{xml}->XMLout($obj->{output}) : ( $obj->{outtype} eq 'json' ? $obj->{json}->objToJson ($obj->{output}, {pretty => 1, indent => 2}) : $obj->{output}->{DATA}) ); - # Kompress - $content = Compress::Zlib::memGzip($content) + # compress data + $content = Compress::Zlib::memGzip($content) if(! $nopack and $obj->{Zlib} and $obj->{browser}->{accept_gzip}); + } - $obj->{handle}->print($obj->{output_header}, $content); + $obj->{handle}->print($obj->{output_header}); + $obj->{sendbytes}+= length($obj->{output_header}); + if($content) { + $obj->{handle}->print($content); + $obj->{sendbytes}+= length($content); + } undef $obj->{output}; undef $obj->{output_header}; diff --git a/lib/XXV/OUTPUT/Html.pm b/lib/XXV/OUTPUT/Html.pm index a3189ed..15e58b9 100644 --- a/lib/XXV/OUTPUT/Html.pm +++ b/lib/XXV/OUTPUT/Html.pm @@ -329,14 +329,19 @@ sub printout { my $nopack = shift || $obj->{nopack} || 0; if($obj->{output} && $obj->{handle}) { - my $content = $obj->{output}; + my $content; + if($obj->{browser}->{Method} ne 'HEAD') { + $content = $obj->{output}; - $content = Compress::Zlib::memGzip($content) - if(! $nopack and $obj->{Zlib} and $obj->{browser}->{accept_gzip}); - - $obj->{handle}->print($obj->{output_header}, $content); + $content = Compress::Zlib::memGzip($content) + if(! $nopack and $obj->{Zlib} and $obj->{browser}->{accept_gzip}); + } + $obj->{handle}->print($obj->{output_header}); $obj->{sendbytes}+= length($obj->{output_header}); - $obj->{sendbytes}+= length($content); + if($content) { + $obj->{handle}->print($content); + $obj->{sendbytes}+= length($content); + } $obj->{handle}->close(); } undef $obj->{output}; @@ -655,22 +660,25 @@ sub datei { local $SIG{'__DIE__'}; my $hdr = $obj->header($typ, \%args); - - my $r = 0; - if(sysopen( FH, $file, O_RDONLY|O_BINARY )) { + if($obj->{browser}->{Method} eq 'HEAD') { $handle->print($hdr); - - my $bytes; - my $data; - do { - $bytes = sysread( FH, $data, 4096 ); - if($bytes) { - $r = $handle->send($data); - } - } while $r && $bytes > 0; - close(FH); } else { - error sprintf("Could not open file '%s'! : %s", $file,$!); + my $r = 0; + if(sysopen( FH, $file, O_RDONLY|O_BINARY )) { + $handle->print($hdr); + + my $bytes; + my $data; + do { + $bytes = sysread( FH, $data, 4096 ); + if($bytes) { + $r = $handle->send($data); + } + } while $r && $bytes > 0; + close(FH); + } else { + error sprintf("Could not open file '%s'! : %s", $file,$!); + } } $handle->close(); }; |
