SVN 通过URL访问php来执行svn更新

//修改svn的服务器配置:
//svn的配置目录为/home/www/.subversion/
//修改下面的servers文件:
//[global]
//store-passwords = yes
//store-plaintext-passwords = no

//putenv  shell_exec  如果禁用,可以在php.ini配置中移除
putenv('LANG=zh_CN.UTF-8');
$username = '用户名';
$password = '密码';
//$target_dir = 'svn地址';
$result = shell_exec("svn up --username $username --password $password --accept theirs-full /www/wwwroot/lemont 2>&1");
echo nl2br($result);
/**
 * 扩展
 */
//访问验证-1分钟最多访问1次
session_start();
if (!$_SESSION["wllogin"]) {
    unset($_SESSION["wllogin"]);
    $_SESSION["wllogin"] = time();
} else {
    $nowtime = $_SESSION["wllogin"] + 60;
    if ($nowtime > time()) {
        exit('请求频繁');
    } else {
        unset($_SESSION["wllogin"]);
    }
}
//token验证
if (isset($_GET['token'])) {
    checkToken($_GET['token']);
} else {
    exit((is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . '?token=' . sendToken());
}
/**
 * 生成token
 */
function sendToken()
{
    $token = md5(strtolower(date("Ymd") . 'TokenC#K'));
    return $token;
}

/**
 * 判断是否SSL协议
 * @return boolean
 */
function is_ssl()
{
    if (isset($_SERVER['HTTPS']) && ('1' == $_SERVER['HTTPS'] || 'on' == strtolower($_SERVER['HTTPS']))) {
        return true;
    } elseif (isset($_SERVER['SERVER_PORT']) && ('443' == $_SERVER['SERVER_PORT'])) {
        return true;
    }
    return false;
}

/**
 * $token 字符串
 */
function checkToken($token)
{
    $token_server = md5(strtolower(date("Ymd") . 'TokenC#K'));
    if (!strcasecmp($token, $token_server)) {
        putenv('LANG=zh_CN.UTF-8');
        $username = '用户名';
        $password = '密码';
        //$target_dir = 'svn地址';
        $result = shell_exec("svn up --username $username --password $password --accept theirs-full /www/wwwroot/lemont 2>&1");
        echo nl2br($result);
    } else {
        exit('token 验证失败');
    }
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Back To Top

鄂ICP备17008157号-1