svnmanager若干bug与漏洞处理

svnmanager是一款使用web界面管理svn的软件,目前官方版本是v1.09,期间安装过程碰到无数问题就不赘述了,以后有空再写,吐血的是装好了居然也有N多问题,网上搜来搜去也没什么结果,只好自己动手。

1 不能创建版本库,创建时无任何错误但没有建立任何东西,但是删除版本库是成功的
查看apache的日志文件error.log,发现这样的提示:'LANG'不是可用的内部或外部命令……
找到svnmanager的版本库管理模块svnmanager\RepositoryModule\DataModule.php,找到函数createRepository和deleteRepository,对比一下区别,发现在deleteRepository函数中执行shell命令之前多一句判断
if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
对比2个分支的命令发现在Windows上少了前面的LANG=$lang;,but,为什么createRepository没有这个判断呢??
没办法自己手工加上了这个判断,并且为Windows分支去掉了shell命令的LANG=$lang;,这下没问题了吧?
再次建立版本库,哦不错,建了一个空目录,真让人感动……
继续查看apache错误日志,发现提示D:\Repositories\"PubTest目录、卷标格式不正确
神马情况,继续找到DataModule.php,把64行的$a_dir变量,输出来看看
D:\Repositories\"PubTest",我勒个去,这要能能建出来我服了
问题出在escapeshellarg($rname)上,这个函数(我是PHP5.3.5)输出的字符串多了一对双引号,改成str_replace("\"", "", escapeshellarg($rname)),再次建立版本库,成功了!

2 管理用户权限时,如果给默认的*号用户添加权限,报错
php直接给错了,显示我们给一个空的用户增加权限,好吧你赢了,星号原来不是代表Everyone……
没办法只能删掉这个星号,找到UserPrivilegesEditPage.php,找到数据绑定逻辑155行,将$membernames[] = "*";注释掉,OK!

3 添加用户一直提示无效的邮箱,这个错误倒是在网上查到了,因为邮箱检查那里会验证邮件地址域对应DNS中的MX记录,所以如果不联网就永远通不过检查,好吧你这是想闹哪样……找到UserModule下的AddPage.tpl的32行以及EditPage.tpl的28行,把邮箱的Validator删去,OK!

4 管理员和用户可以编辑用户的帐号名称,但是随之而来权限都没了,等等,帐号在这里是主键怎么能随便改,这是哪门子的设计思路,找到用户编辑页面UserModule下的EditPage.tpl,把11行的UserName从TTextBox改成TLabel,相应的TLabel是不能有检查器的,所以12行删掉,OK!

你可能感兴趣的:(SVN,SVN,manager,svnmanager)