【问题标题】:Plugin to use gitolite's ACLs for CGIT/Apache httpd?使用 gitolite 的 ACL 用于 CGIT/Apache httpd 的插件?
【发布时间】:2015-06-24 17:08:46
【问题描述】:

我们使用 gitolite 的 ACL 机制来控制谁可以访问不同的存储库。我们还将 CGIT 与 Apache httpd 一起使用,以允许浏览可读的存储库。

我们还想在 Apache httpd 访问控制系统中使用 gitolite ACL。

是否有提供此功能的 Apache httpd authn/authz 模块?

谢谢!

【问题讨论】:

    标签: apache httpd.conf gitolite cgit


    【解决方案1】:

    不久前我已经将 CGit 和 gitolite 与这个 cgi Perl 脚本集成,调用 gitolite:cgit/cgit.pl.tpl
    (不要介意@H@,这些是模板占位符,应该在以后进行赋值以生成实际的 Perl 脚本)

    这个想法是从 Apache 完成的身份验证中受益:

    my $remote_user=$ENV{"REMOTE_USER"};
    

    并在调用 Gitolite 时使用该用户来检查是否可以授予对 repo 的访问权限,如果授予访问权限,则调用实际的 cgit.cgi C 过程:

    use Gitolite::Rc;
    use Gitolite::Common;
    use Gitolite::Conf::Load;
    
    (my $repo)=($path_info =~ /\/([^\/]+)/);
      my $perm = "R";
      if ($repo ne "") {
      my $aperm = access( $repo, $user, 'R', 'any' );
      # my ($aperm, $creator) = &repo_rights($repo);
        $perm=$aperm;
      }
      if ($perm !~ /DENIED/) {
        system("@H@/cgit/cgit.cgi");
      }
      else {
        print "Content-type: text/html\n\n";
        print "<html>\n";
        print "<body>\n";
        print " <h1>HTTP Status 403 - Access is denied</h1>\n";
        print " You don't have access to repo <b>$repo</b> as <b>$user</b>\n";
        print "</body>\n";
        print "</html>\n";
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      • 2015-07-10
      • 2013-10-02
      相关资源
      最近更新 更多