sub some_auth_required {
my $r = Plack::Request->new($_[0]);
return 1 if $_[0]->{'gruntmaster.reqadmin'} || $r->path eq '/action/passwd' || $r->path =~ m,/pb/$word/submit$,;
+ return 1 if $r->path =~ m,^/ct/$word/pb/$word, && time < contest_end $1;
0
}
sub require_admin {
my $app = $_[0];
sub {
- *__ANON__ = "require_admin_middleware";
+ local *__ANON__ = "require_admin_middleware";
my $env = $_[0];
my $r = Plack::Request->new($env);
$env->{'gruntmaster.reqadmin'} = 1 if admin_required $r->path;
$self->_generate($htc, $lang, @args);
my $out = $htc->output;
utf8::downgrade($out);
- [200, ['Content-Type' => 'text/html', 'Content-Language' => $_[1], 'Vary' => 'Accept-Language', 'X-Forever' => 1, 'Cache-Control' => 'max-age=' . $self->max_age], [ $out ] ]
+ my $vary = 'Accept-Language, ' . $self->vary;
+ [200, ['Content-Type' => 'text/html', 'Content-Language' => $_[1], 'Vary' => $vary, 'X-Forever' => 1, 'Cache-Control' => 'max-age=' . $self->max_age], [ $out ] ]
}
sub _generate {}
+sub vary {}
+
sub max_age { 60 }
sub variants {
sub _generate{
my ($self, $htc, $lang, $env, $contest, $id) = @_;
debug $env => "language is '$lang', contest is '$contest', id is '$id'";
+ my $user = $env->{REMOTE_USER};
+ if ($contest && $user) {
+ local $Gruntmaster::Data::contest = $contest;
+ mark_open $id, $user;
+ debug $env => "Marking problem $id of contest $contest open by $user";
+ }
$htc->param(cansubmit => 1);
if ($contest) {
$htc->param(statement => problem_statement $id);
}
+sub vary { 'Authorization' }
+sub max_age { 600 }
+
1
export PURGE_HOST=gm.ieval.ro
export AAP_ROOTDIR=/var/www/auth/us/
export PLACK_ENV=deployment
-exec start_server --port=8081 -- plackup -s Starlet -Ilib
+exec start_server --port=8081 -- plackup -s Starlet -Ilib -L Delayed