该系统为使用PHP开发的基于web的Subversion(SVN)服务器端管理工具。支持功能:SVN仓库管理、SVN用户管理、SVN分组管理、目录授权、目录浏览、Hooks管理、在线dump备份、在线备份恢复、SVN用户禁用、服务器状态管理、日志管理、消息通知、更新检测...
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

206 lines
6.5 KiB

<?php
/**
* 不提供修改svn用户名称的方法 因为从svn的机制来看 这是不合理的 一个准确唯一不变的用户对应svn仓库所有的历史记录是非常有必要的
*/
/**
* 所有的行中以#开头或包含#的为无效行
* 以[users]开头且仅包含[users]的所在行为开始行
* 在开始行之后且以[*]开头的行为结束行
* 开始行与结束行之间的去除无效行剩下的行为有效行
* 有效行中内容不符合 user=pass 的标识为无效行
*/
/**
* 获取svn所有用户列表
*
* 0 文件格式错误 文件中不存在[users]标识
* null 空的用户列表
* array(
* 'user1',
* 'user2'
* )
*/
function FunGetSvnUserList($passwdContent)
{
preg_match_all("/^\[users\][\n+]([\s\S]*)/m", $passwdContent, $passwdContentPreg);
if (array_key_exists(0, $passwdContentPreg[1])) {
if (empty(trim($passwdContentPreg[1][0]))) {
return null;
} else {
preg_match_all("/^([A-Za-z0-9_\s]*[^\s])\s*=\s*([A-Za-z0-9_.@]+)/m", $passwdContentPreg[1][0], $resultPreg);
array_walk($resultPreg[1], 'ArrayValueTrim');
return $resultPreg[1];
}
} else {
return '0';
}
}
/**
* 获取svn所有用户以及每个用户对应的密码
*
* 0 文件格式错误 文件中不存在[users]标识
* null 空的用户列表
* array(
* //正常数据
* 'user1'=>'pass1',
* 'user2'=>'pass2'
* )
*/
function FunGetSvnUserPassList($passwdContent)
{
preg_match_all("/^\[users\][\n+]([\s\S]*)/m", $passwdContent, $passwdContentPreg);
if (array_key_exists(0, $passwdContentPreg[1])) {
if (empty(trim($passwdContentPreg[1][0]))) {
return null;
} else {
preg_match_all("/^([A-Za-z0-9_\s]*[^\s])\s*=\s*([A-Za-z0-9_.@]+)/m", $passwdContentPreg[1][0], $resultPreg);
array_walk($resultPreg[1], 'ArrayValueTrim');
array_walk($resultPreg[2], 'ArrayValueTrim');
return array_combine($resultPreg[1], $resultPreg[2]);
}
} else {
return '0';
}
}
/**
* 获取svn某个用户的密码
*
* 0 文件格式错误 文件中不存在[users]标识
* null 空的用户列表
* array(
* //正常数据
* 'user1'=>'pass1',
* 'user2'=>'pass2'
* )
*/
function FunGetPassByUser($passwdContent, $user)
{
preg_match_all("/^\[users\][\n+]([\s\S]*)/m", $passwdContent, $passwdContentPreg);
if (array_key_exists(0, $passwdContentPreg[1])) {
if (empty(trim($passwdContentPreg[1][0]))) {
return null;
} else {
preg_match_all("/^([A-Za-z0-9_\s]*[^\s])\s*=\s*([A-Za-z0-9_.@]+)/m", $passwdContentPreg[1][0], $resultPreg);
array_walk($resultPreg[1], 'ArrayValueTrim');
array_walk($resultPreg[2], 'ArrayValueTrim');
return $resultPreg[2][array_search($user, $resultPreg[1])];
}
} else {
return '0';
}
}
/**
* 添加svn用户以及对应的密码
*
* 0 文件格式错误 文件中不存在[users]标识
* 1 用户已存在
* string 正常
*/
function FunAddSvnUser($passwdContent, $user, $passwd)
{
preg_match_all("/^\[users\][\n+]([\s\S]*)/m", $passwdContent, $passwdContentPreg);
if (array_key_exists(0, $passwdContentPreg[1])) {
if (empty(trim($passwdContentPreg[1][0]))) {
$userStr = "\n$user=$passwd\n";
return $passwdContent . $userStr;
} else {
preg_match_all("/^([A-Za-z0-9_\s]*[^\s])\s*=\s*([A-Za-z0-9_.@]+)/m", $passwdContentPreg[1][0], $resultPreg);
array_walk($resultPreg[1], 'ArrayValueTrim');
array_walk($resultPreg[2], 'ArrayValueTrim');
if (in_array($user, $resultPreg[1])) {
return '1';
}
$combinArray = array_combine($resultPreg[1], $resultPreg[2]);
$resultStr = "[users]\n";
foreach ($combinArray as $key => $value) {
$resultStr .= "$key=$value\n";
}
$resultStr .= "$user=$passwd\n";
return $resultStr;
}
} else {
return '0';
}
}
/**
* 删除svn用户
*
* 0 文件格式错误 文件中不存在[users]标识
* 1 用户不存在
* string 正常
*/
function FunDelSvnUserPasswd($passwdContent, $user)
{
preg_match_all("/^\[users\][\n+]([\s\S]*)/m", $passwdContent, $passwdContentPreg);
if (array_key_exists(0, $passwdContentPreg[1])) {
if (empty(trim($passwdContentPreg[1][0]))) {
return '1';
} else {
preg_match_all("/^([A-Za-z0-9_\s]*[^\s])\s*=\s*([A-Za-z0-9_.@]+)/m", $passwdContentPreg[1][0], $resultPreg);
array_walk($resultPreg[1], 'ArrayValueTrim');
array_walk($resultPreg[2], 'ArrayValueTrim');
if (in_array($user, $resultPreg[1])) {
$combinArray = array_combine($resultPreg[1], $resultPreg[2]);
$resultStr = "[users]\n";
foreach ($combinArray as $key => $value) {
if ($key == $user) {
continue;
}
$resultStr .= "$key=$value\n";
}
return $resultStr;
}
return '1';
}
} else {
return '0';
}
}
/**
* 修改密码文件中的用户名
*/
function FunUpdSvnUserPasswd($passwdContent, $oldUserName, $newUserName)
{
}
/**
* 修改svn用户的密码
*
* 0 文件格式错误 文件中不存在[users]标识
* 1 用户不存在
* string 正常
*/
function FunUpdSvnUserPass($passwdContent, $user, $passwd)
{
preg_match_all("/^\[users\][\n+]([\s\S]*)/m", $passwdContent, $passwdContentPreg);
if (array_key_exists(0, $passwdContentPreg[1])) {
if (empty(trim($passwdContentPreg[1][0]))) {
return '1';
} else {
preg_match_all("/^([A-Za-z0-9_\s]*[^\s])\s*=\s*([A-Za-z0-9_.@]+)/m", $passwdContentPreg[1][0], $resultPreg);
array_walk($resultPreg[1], 'ArrayValueTrim');
array_walk($resultPreg[2], 'ArrayValueTrim');
if (in_array($user, $resultPreg[1])) {
$combinArray = array_combine($resultPreg[1], $resultPreg[2]);
$resultStr = "[users]\n";
foreach ($combinArray as $key => $value) {
if ($key == $user) {
$value = $passwd;
}
$resultStr .= "$key=$value\n";
}
return $resultStr;
}
return '1';
}
} else {
return '0';
}
}