diff options
author | Alexander Gavrilov <angavrilov@gmail.com> | 2008-11-06 01:36:23 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-11-06 16:38:51 -0800 |
commit | dd7f5f105a1d4d094a96c5e3f251854f81106be0 (patch) | |
tree | 0fc0de6cf471f6af9e390535d9e978ee6376f2df /gitweb/gitweb.perl | |
parent | ec26f098a6593bbd9d396fb7ee74368cdd3eeed3 (diff) | |
download | git-dd7f5f105a1d4d094a96c5e3f251854f81106be0.tar.gz git-dd7f5f105a1d4d094a96c5e3f251854f81106be0.tar.xz |
gitweb: Add a per-repository authorization hook.
Add a configuration variable that can be used to specify an
arbitrary subroutine that will be called in the same situations
where $export_ok is checked, and its return value used
to decide whether the repository is to be shown.
This allows the user to implement custom authentication
schemes, for example by issuing a subrequest through mod_perl
and checking if Apache will authorize it.
Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'gitweb/gitweb.perl')
-rwxr-xr-x | gitweb/gitweb.perl | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 68bdf6265..74672bffd 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -95,6 +95,11 @@ our $default_projects_order = "project"; # (only effective if this variable evaluates to true) our $export_ok = "++GITWEB_EXPORT_OK++"; +# show repository only if this subroutine returns true +# when given the path to the project, for example: +# sub { return -e "$_[0]/git-daemon-export-ok"; } +our $export_auth_hook = undef; + # only allow viewing of repositories also shown on the overview page our $strict_export = "++GITWEB_STRICT_EXPORT++"; @@ -400,7 +405,8 @@ sub check_head_link { sub check_export_ok { my ($dir) = @_; return (check_head_link($dir) && - (!$export_ok || -e "$dir/$export_ok")); + (!$export_ok || -e "$dir/$export_ok") && + (!$export_auth_hook || $export_auth_hook->($dir))); } # process alternate names for backward compatibility |