I Found it on github

https://github.com/eprints/eprints/blob/392474eec1b8125a66ed2d3e12b02aeb67dc07c4/lib/defaultcfg/cfg.d/security.pl


On 7/20/18 6:24 PM, Chas. Owens wrote:
All of this is supposition since I can't see anything you haven't shown us.

It sounds like this code is part of a larger program that is going to call

   do "EPrints";

which will bring the source of EPrints into the larger program. The $c variable is probably setup there.  What the code in EPrints is doing is setting up a handler named can_request_view_document.  At some point in the larger program, it is going to say something like

my $document = $r->param(doc);
my $can_request = $c->{can_request_view_document}->($document, $r);

return 403, "You are not allowed to access $document" unless $can_request;
return 400, "$document doesn't exist" unless -f $document;
return 200, $document;


On Fri, Jul 20, 2018 at 11:06 AM James Kerwin <jkerwin2...@gmail.com <mailto:jkerwin2...@gmail.com>> wrote:

    Afternoon all,

    I have been asked to take a look at a .pl file which is part of a
    set-up called "EPrints". The particular file controls who can
    access documents on a server.

    Excluding some comments, the file starts like:

    $c->{can_request_view_document} = sub
    {
            my( $doc, $r ) = @_;

    It then goes on to complete the subroutine and return a value.

    I understand that $doc and $r are populated via @_ but I have
    never before seen the structure of the first line starting with
    "$c". Additionally, the file doesn't look like a typical Perl file
    (eg.#!/usr/bin/perl -w at the top and some use statements).

    I know it's very vague, but could anybody explain this syntax to
    me? My suspicion is that something else is calling the subroutines
    in this file? Am I at least on the right track?

    Thanks,
    James

Reply via email to