use URI::Escape;
use Benchmark ':hireswallclock';
use I18N::AcceptLanguage;
+use Date::Parse;
use Deb::Versions;
use Packages::Config qw( $DBDIR $ROOT $TEMPLATEDIR $CACHEDIR
delete $ENV{'LC_ALL'};
delete $ENV{'LC_MESSAGES'};
- my %SUITES_ALIAS = ( oldstable => 'sarge',
+ my %SUITES_ALIAS = ( #oldstable => 'sarge',
stable => 'etch',
testing => 'lenny',
unstable => 'sid',
- '3.1' => 'sarge',
'4.0' => 'etch' );
# Read in all the variables set by the form
my $homedir = dirname($ENV{SCRIPT_FILENAME}).'/../';
&Packages::Config::init( $homedir );
&Packages::DB::init();
+ my $last_modified = $Packages::DB::db_read_time;
+ my $now = time;
+ my $expires = $last_modified + (12*3600);
+ $expires = $now + 3600 if $expires < $now;
+ # allow some fudge, since the db mod time is not the end of
+ # the cron job
+ $last_modified = $now if $now - $last_modified < 3600;
+
+ if ($input->http('If-Modified-Since') and
+ (my $modtime = str2time($input->http('If-Modified-Since'), 'UTC'))) {
+ if ($modtime <= $last_modified) {
+ print $input->header(-status => 304);
+ exit;
+ }
+ }
my %PO_LANGUAGES = map { $_ => 1 } @LANGUAGES;
my %DDTP_LANGUAGES = map { $_ => 1 } @DDTP_LANGUAGES;
$page_content{params} = \%params;
unless (@Packages::CGI::fatal_errors) {
- print $input->header(-charset => $charset, -type => get_mime($opts{format}) );
+ print $input->header(-charset => $charset,
+ -type => get_mime($opts{format}),
+ -vary => 'negotiate,accept-language',
+ -last_modified => strftime("%a, %d %b %Y %T %z",
+ localtime($last_modified)),
+ -expires => strftime("%a, %d %b %Y %T %z",
+ localtime($expires)),
+ );
#use Data::Dumper;
#print '<pre>'.Dumper(\%ENV, \%page_content, get_all_messages()).'</pre>';
print $template->page( $what_to_do, { %page_content, %{ get_all_messages() } } );