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.
216 lines
4.6 KiB
216 lines
4.6 KiB
3 years ago
|
<?php
|
||
|
/*
|
||
|
* @Author: witersen
|
||
|
* @Date: 2022-04-27 23:19:24
|
||
|
* @LastEditors: witersen
|
||
3 years ago
|
* @LastEditTime: 2022-05-04 17:14:16
|
||
3 years ago
|
* @Description: QQ:1801168257
|
||
|
* @copyright: https://github.com/witersen/
|
||
|
*/
|
||
|
|
||
|
namespace SVNAdmin\SVN;
|
||
|
|
||
|
class Core
|
||
|
{
|
||
|
/**
|
||
|
* authz文件内容
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public $authzFileContent;
|
||
|
|
||
|
/**
|
||
|
* passwd文件内容
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public $passwdFileContent;
|
||
|
|
||
|
/**
|
||
|
* 禁用SVN用户前缀
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $REG_SVN_USER_DISABLED = '#disabled#';
|
||
|
|
||
|
/**
|
||
|
* 匹配authz文件中的用户权限
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $REG_AUTHZ_USER_PRI = "/^([A-Za-z0-9-_.\s]*[^\s])\s*=(.*)/m";
|
||
|
|
||
|
/**
|
||
|
* 匹配authz文件中的用户组权限
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $REG_AUTHZ_GROUP_PRI = "/^@([A-Za-z0-9-_.\s]*[^\s])\s*=(.*)/m";
|
||
|
|
||
|
/**
|
||
|
* 匹配authz文件中[groups]下的分组以及成员
|
||
|
*
|
||
|
* [groups]
|
||
|
* group1=u1,@group2
|
||
|
* group1=u2
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $REG_AUTHZ_GROUP_KEY_VALUE = "/^([A-Za-z0-9-_.\s]*[^\s])\s*=(.*)/m";
|
||
|
|
||
|
/**
|
||
|
* 匹配authz文件中的[groups]及其内容
|
||
|
*
|
||
|
* 如
|
||
|
* [groups]
|
||
|
* g1=u1,u2
|
||
|
* g2=u1,u3
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $REG_AUTHZ_GROUP_WITH_CON = "/^\[groups\]([\s\S][^\[]*)/m";
|
||
|
|
||
|
/**
|
||
|
* 匹配passwd文件中的[users]及其内容
|
||
|
*
|
||
|
* [users]
|
||
|
* u1=password
|
||
|
* u2=password
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $REG_PASSWD_USER_WITH_CON = "/^\[users\]([\s\S][^\[]*)/m";
|
||
|
|
||
|
/**
|
||
|
* 匹配passwd文件中的用户以及密码
|
||
|
*
|
||
|
* [users]
|
||
|
* u1=password
|
||
|
* u2=password
|
||
|
* 中的后两行
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $REG_PASSWD_USER_PASSWD = "/^((%s)*[A-Za-z0-9-_.]+)\s*=(.*)/m";
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 匹配authz配置文件中某个分组有权限的仓库列表
|
||
|
*
|
||
|
* %s => $group
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $REG_AUTHZ_GROUP_PRI_REPS = "/^\[(.*?):(.*?)\][A-za-z0-9_=@*\s]*?@%s[\s]*=[\s]*([rw]+)$\n/m";
|
||
|
|
||
|
/**
|
||
|
* 匹配authz配置文件中某个用户有权限的仓库列表
|
||
|
*
|
||
|
* %s => $user
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $REG_AUTHZ_USER_PRI_REPS = "/^\[(.*?):(.*?)\][A-za-z0-9_=@*\s]*?%s[\s]*=[\s]*([rw]+)$\n/m";
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 匹配authz配置文件中所有用户有权限的仓库列表
|
||
|
*
|
||
|
* *=r、*=rw
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $REG_AUTHZ_ALL_HAVE_PRI_REPS = "/^\[(.*?):(.*?)\][A-za-z0-9_=@*\s]*?\*[\s]*=[\s]*([rw]+)$\n/m";
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 匹配authz配置文件中所有用户无权限的仓库列表
|
||
|
*
|
||
|
* *=
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $REG_AUTHZ_ALL_NO_PRI_REPS = "/^\[(.*?):(.*?)\][A-za-z0-9_=@*\s]*?\*[\s]*=[\s]*$\n/m";
|
||
|
|
||
|
/**
|
||
|
* 匹配通过魔力符号配置的相关信息
|
||
|
*
|
||
|
* 包含 ~ $等前缀
|
||
|
*/
|
||
|
//todo
|
||
|
|
||
|
/**
|
||
|
* 匹配authz配置文件中指定仓库的指定路径 包含内容
|
||
|
*
|
||
|
* [rep1:/floder]
|
||
|
* u1=r
|
||
|
* @g1=rw
|
||
|
*
|
||
|
* %s => $repName
|
||
|
* %s => $repPath
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $REG_AUTHZ_REP_SPECIAL_PATH_WITH_CON = "/^\[%s:%s\]([\s\S][^\[]*)/m";
|
||
|
|
||
|
/**
|
||
|
* 匹配authz配置文件中指定仓库的指定路径 不包含内容
|
||
|
*
|
||
|
* 如
|
||
|
* [rep1:/]
|
||
|
* 或
|
||
|
* [rep2:/floder]
|
||
|
* 等
|
||
|
*
|
||
|
* %s => $repName
|
||
|
* %s => $repPaht str_replace('/', '\/', $repPath)
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $REG_AUTHZ_REP_SPECIAL_PATH_WITHOUT_CON = "/^\[%s:%s\]/m";
|
||
|
|
||
|
/**
|
||
|
* 匹配authz配置文件中指定仓库的所有路径 不包含内容
|
||
|
*
|
||
|
* %s => $repName
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $REG_AUTHZ_REP_ALL_PATH_WITHOUT_CON = "/^\[%s:(.*?)\]/m";
|
||
|
|
||
|
/**
|
||
|
* 匹配authz配置文件中指定仓库的所有路径以及包含的内容
|
||
|
*
|
||
|
* %s => $repName
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $REG_AUTHZ_REP_ALL_PATH_WITH_CON = "/^\[%s:.*\][\s\S][^\[]*/m";
|
||
|
|
||
|
/**
|
||
|
* 匹配authz配置文件中的所有仓库名称
|
||
|
*
|
||
|
* 不匹配这些仓库的内容和具体路径
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $REG_AUTHZ_ALL_REP_WITHOUT_PATH_AND_CON = "/^\[(.*?):.*?\]/m";
|
||
|
|
||
|
/**
|
||
|
* 将 svnadmin info $repPaht 的结果匹配为 key => value 形式
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $REG_REP_INFO = "/(.*):[\S]*(.*)/m";
|
||
|
|
||
3 years ago
|
protected $config_svn;
|
||
3 years ago
|
|
||
3 years ago
|
|
||
3 years ago
|
function __construct($authzFileContent, $passwdFileContent, $config_svn)
|
||
3 years ago
|
{
|
||
|
$this->authzFileContent = $authzFileContent;
|
||
|
$this->passwdFileContent = $passwdFileContent;
|
||
3 years ago
|
$this->config_svn = $config_svn;
|
||
3 years ago
|
}
|
||
|
}
|