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.
228 lines
4.9 KiB
228 lines
4.9 KiB
<?php |
|
/* |
|
* @Author: witersen |
|
* @Date: 2022-04-27 23:19:24 |
|
* @LastEditors: witersen |
|
* @LastEditTime: 2022-05-09 16:36:56 |
|
* @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"; |
|
|
|
/** |
|
* 配置文件svn内容 |
|
* |
|
* @var array |
|
*/ |
|
protected $config_svn; |
|
|
|
/** |
|
* 配置文件bin内容 |
|
* |
|
* @var array |
|
*/ |
|
protected $config_bin; |
|
|
|
|
|
function __construct($authzFileContent, $passwdFileContent, $config_svn, $config_bin) |
|
{ |
|
$this->authzFileContent = $authzFileContent; |
|
$this->passwdFileContent = $passwdFileContent; |
|
$this->config_svn = $config_svn; |
|
$this->config_bin = $config_bin; |
|
} |
|
}
|
|
|