summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
412316a)
This makes it technically fairly straightforward to take advantage of
the CAF Login Exception.
In the resulting website the source download link is only present on
the login page unless the application also provides such a link, but
that link is functional after logging in and can easily be used by
bookmarking the url or using multiple browser tabs.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
+=item C<srcdump_needlogin>
+
+Boolean: do users need to log in to be able to download the source
+code for the whole application ? Default: 0.
+
=item C<srcdump_param_name>
Form parameter name used to indicate that this is a source download
=item C<srcdump_param_name>
Form parameter name used to indicate that this is a source download
}
sub gen_plain_source_link_html ($$) {
my ($c,$r) = @_;
}
sub gen_plain_source_link_html ($$) {
my ($c,$r) = @_;
- gen_srcdump_link_html($c,$r, 'Source available', 'source');
+ my $msg = 'Source available';
+ $msg .= " to logged-in users" if $r->{S}{srcdump_needlogin};
+ gen_srcdump_link_html($c,$r, $msg, 'source');
}
sub gen_plain_footer_html ($$) {
}
sub gen_plain_footer_html ($$) {
gen_login_form => \&gen_plain_login_form,
gen_login_link => \&gen_plain_login_link,
gen_postmainpage_form => \&gen_postmainpage_form,
gen_login_form => \&gen_plain_login_form,
gen_login_link => \&gen_plain_login_link,
gen_postmainpage_form => \&gen_postmainpage_form,
+ srcdump_needlogin => 0,
srcdump_dump => \&srcdump_dump,
srcdump_prepare => \&srcdump_dirscan_prepare,
srcdump_licence_path => undef,
srcdump_dump => \&srcdump_dump,
srcdump_prepare => \&srcdump_dirscan_prepare,
srcdump_licence_path => undef,
my $srcdump = $r->_rp('srcdump_param_name');
if ($srcdump) {
die if $srcdump =~ m/\W/;
my $srcdump = $r->_rp('srcdump_param_name');
if ($srcdump) {
die if $srcdump =~ m/\W/;
- return ({ Kind => 'SRCDUMP-'.uc $srcdump,
- Message => undef,
- _CookieRaw => undef,
- Params => { } });
+ $srcdump= {
+ Kind => 'SRCDUMP-'.uc $srcdump,
+ Message => undef,
+ _CookieRaw => undef,
+ Params => { },
+ };
+ }
+ if ($srcdump || !$r->{S}{srcdump_needlogin}) {
+ return ($srcdump);
}
my $cooksraw = $r->_ch('get_cookie');
}
my $cooksraw = $r->_ch('get_cookie');
}
die unless $cookt eq 'y';
}
die unless $cookt eq 'y';
- unless ($r->{S}{promise_check_mutate} && $meth eq 'GET') {
+ unless (($r->{S}{promise_check_mutate} && $meth eq 'GET')
+ || $srcdump) {
if ($parmt eq 't' || $parmt eq 'n') {
return ({ Kind => 'STALE',
Message => $r->_gt("Login session interrupted."),
if ($parmt eq 't' || $parmt eq 'n') {
return ({ Kind => 'STALE',
Message => $r->_gt("Login session interrupted."),
}
$r->_db_update_last($cooku,$parmh);
}
$r->_db_update_last($cooku,$parmh);
+ if ($srcdump) {
+ return ($srcdump);
+ }
+
$r->{ParmT} = $parmt;
$r->{AssocRaw} = $cooks;
$r->{UserOK} = $cooku;
$r->{ParmT} = $parmt;
$r->{AssocRaw} = $cooks;
$r->{UserOK} = $cooku;
#print STDERR "C-D-C OK\n";
return undef;
}
#print STDERR "C-D-C OK\n";
return undef;
}