该系统为使用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.
 
 
 
 

207 lines
4.7 KiB

<?php
/*
* @Author: witersen
* @Date: 2022-04-24 23:37:05
* @LastEditors: witersen
* @LastEditTime: 2022-04-27 15:20:52
* @Description: QQ:1801168257
*/
class subversion extends controller
{
function __construct()
{
/*
* 避免子类的构造函数覆盖父类的构造函数
*/
parent::__construct();
/*
* 其它自定义操作
*/
}
/**
* 获取Subversion运行状态 用于页头提醒
*/
function GetStatus()
{
$result = FunShellExec("ps auxf | grep -v 'grep' | grep svnserve");
if (trim($result) == ISNULL) {
FunMessageExit(200, 0, '请注意 subversion服务并未以daemon方式运行! 如果非人为操作,请及时检查原因!');
} else {
FunMessageExit();
}
}
/**
* 获取Subversion的检出地址前缀
*
* 先从Subversion配置文件获取绑定端口和主机
* 然后与listen.json配置文件中的端口和主机进行对比和同步
*/
function GetCheckout()
{
$result = FunGetSubversionListen();
$checkoutHost = $result[$result['enable']];
if ($result['bindPort'] != '3690') {
$checkoutHost .= ':' . $result['bindPort'];
}
FunMessageExit(200, 1, '成功', [
'protocal' => 'svn://',
'prefix' => $checkoutHost
]);
}
/**
* 获取Subversion的详细信息
*/
function GetDetail()
{
//获取绑定主机、端口等信息
$bindInfo = FunGetSubversionListen();
//检测运行信息
$runInfo = FunShellExec('ps auxf|grep -v "grep"|grep svnserve');
//检测安装信息
$installInfo = file_exists('/usr/bin/svnserve');
//检测安装状态
//未知状态
$installInfo = -1;
if ($runInfo == ISNULL && !$installInfo) {
//未安装
$installed = 0;
} else if ($runInfo == ISNULL && $installInfo) {
//安装未启动
$installed = 1;
} else if ($runInfo != ISNULL && $installInfo) {
//运行中
$installed = 2;
}
//检测subversion版本
$version = '-';
if ($installed != 0) {
$versionInfo = FunShellExec('svnserve --version');
preg_match_all(REG_SUBVERSION_VERSION, $versionInfo, $versionInfoPreg);
if (array_key_exists(0, $versionInfoPreg[0])) {
$version = trim($versionInfoPreg[1][0]);
} else {
$version = '-';
}
}
FunMessageExit(200, 1, '成功', [
'version' => $version,
'installed' => $installed,
'bindPort' => $bindInfo['bindPort'],
'bindHost' => $bindInfo['bindHost'],
'manageHost' => $bindInfo['manageHost'],
'enable' => $bindInfo[$bindInfo['enable']],
'svnserveLog' => SVNSERVE_LOG_FILE
]);
}
/**
* 安装SVN
*/
function Install()
{
}
/**
* 卸载SVN
*/
function UnInstall()
{
}
/**
* 启动SVN
*/
function Start()
{
FunShellExec("systemctl start svnserve");
FunMessageExit();
}
/**
* 停止SVN
*/
function Stop()
{
FunShellExec("systemctl stop svnserve");
FunMessageExit();
}
/**
* 修改svnserve的绑定端口
*/
function EditPort()
{
}
/**
* 修改svnserve的绑定主机
*/
function EditHost()
{
}
/**
* 修改管理系统主机名
*/
function EditManageHost()
{
}
/**
* 修改检出地址
*/
function EditEnable()
{
}
/**
* 查看svnserve运行日志
*/
function ViewSvnserveLog()
{
}
/**
* 获取配置文件列表
*/
function GetConfig()
{
FunMessageExit(200, 1, '成功', [
[
'key' => 'SVN仓库父目录',
'value' => SVN_REPOSITORY_PATH
],
[
'key' => 'svnserve环境变量文件',
'value' => SVNSERVE_ENV_FILE
],
[
'key' => 'SVN仓库权限配置文件',
'value' => SVN_CONF_FILE
],
[
'key' => 'authz文件',
'value' => SVN_AUTHZ_FILE
],
[
'key' => 'passwd文件',
'value' => SVN_PASSWD_FILE
],
[
'key' => '备份文件夹',
'value' => SVN_BACHUP_PATH
],
]);
}
}