用Perl编写Apache模块续二

代码地址:

目标:以整合各类项目管理系统中的用户体系及权限体系为目标,实现SVN的集成式动态鉴权

以禅道项目管理系统的数据库结构为标准,实现了可用的svn authz验证功能。

支持平台:usvn、禅道等 - 开发中,本文仅对前期的探索工作做点整理

以用户名、密码、项目的acl开发程度open、private、custom三种关系进行相应的匹配,实现动态的验证。

 

由于不懂perl,所以只是简单的修改,完成了相应功能。

开发环境:

 

Windows、XAMPP 1.7.2

做完后,灵机一动,既然有mod_perl,是否mod_python也可以,一查modpython的官网api,果然有相关接口,也就是说理论上可以用python来实现同样的逻辑。但实现原理与mod_perl有点不同,mod_perl是支持直接编写apache模块,相关配置也是被放到apache的conf文件中,但mod_python或者其他不是以mod方式执行的语言则需以代理层的方式实现类似功能,以前也看过有人用go写过一个代理。

 

 

项目地址:

开发时,是以xampp 1.7.2版本为基础进行测试,集成了perl的5.10版本

  1. 加载perl模块

    LoadFile "D:/PHP/xampp/perl/bin/perl510.dll" LoadModule perl_module modules/mod_perl.so

  2. 配置svn

    PerlLoadModule Apache::Authn::ZentaoPMS

    #ErrorDocument 404 default
    DAV svn
    SVNParentPath "D:PHPxamppSvnReposvn"
    SVNListParentPath on
    
    Require valid-user
    AuthName "ZentaoPMS"
    AuthType Basic
    
    #SVNPathAuthz off
    
    PerlAccessHandler Apache::Authn::ZentaoPMS::access_handler
    PerlAuthenHandler Apache::Authn::ZentaoPMS::authen_handler
    ## for mysql
    RedmineDSN "DBI:mysql:database=usvn;host=127.0.0.1"
    RedmineDbUser "root"
    RedmineDbPass ""
    

 有兴趣的可以一起参加。

</Location>

 

  1. 加载perl模块

    LoadFile "D:/PHP/xampp/perl/bin/perl510.dll" LoadModule perl_module modules/mod_perl.so

 

  1. 配置svn

    PerlLoadModule Apache::Authn::Redmine

    #ErrorDocument 404 default
    DAV svn
    SVNParentPath "D:PHPxamppSvnReposvn"
    SVNListParentPath on
    
    Require valid-user
    AuthName "USVN"
    AuthType Basic
    
    #SVNPathAuthz off
    
    PerlAccessHandler Apache::Authn::Redmine::access_handler
    PerlAuthenHandler Apache::Authn::Redmine::authen_handler
    ## for mysql
    #RedmineDSN "DBI:mysql:database=usvn;host=127.0.0.1"
    #RedmineDbUser "root"
    #RedmineDbPass ""
    
    AuthUserFile D:PHPxamppSvnRepohtpasswd
    AuthzSVNAccessFile D:PHPxamppSvnRepoauthz
</Location>

 目前遇到的问题:上面配置文件中传递的参数如RedmineDSN没有传到代码环境中

 
  1. D:/PHP/xampp/perl/site/Apache/Authn/Redmine.pm

内容详见代码库。

 

以上就是记流水帐的意思,整个开发工作还没有完成。

关于Perl与Apache的知识,请参看:

本文由明仕msyz手机版发布于旅游-环球旅讯,转载请注明出处:用Perl编写Apache模块续二

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。