<?php
/*
 * =================================================================================
 * 版权声明：保留开源作者及版权声明前提下，开源代码可进行修改及用于任何商业用途。
 * 开源作者：众产® http://ciy.cn/code
 * 版本：0.7.3
 * ====================================================================================
 */
/*
 * 支持github和码云，需设置webhooks网址
 * 运行原理:
 * 先从git上拉取代码。手动在目录中成功执行git pull。
 * 设置webhooks，选择application/json
 * 有push时，git库访问本页面，在ud目录下建立gitpull.x文件。
 * crond定时执行<gitpull.sh 仓库目录>，如果gitpull.x文件存在，则执行git pull拉取，成功后删除文件。
 * gitpull.sh脚本将拉取记录将到ud/gitpull.log文件。
 * 该方案无需增加php执行权限，相对安全，可以实现web集群部署。
 * golang不适用。因源码也会被拉取。
 * 
 * 服务器端安装git。
 * 进入软件目录，拉取代码:
 * git clone http://git.ciy.cn:4001/xxx.git .
 * 在cron中定期执行:
 * * * * * * /var/spool/cron/gitpull5.sh /软件目录 "http://访问域名/ajax/api/gitpull.result?data="
 */
//http://xxx.cn/ajax/api/gitpull.push
//http://xxx.cn/ajax/api/gitpull.result
namespace web\api;

class gitpull {
    public static function json_push() {
        $server = "\r\n\r\n\r\n\$_SERVER:\r\n";
        foreach ($_SERVER as $k => $v)
            $server .= $k . ': ' . $v . "\r\n";
        savelogfile('gitpull', $server, true);
        if (@$_SERVER['HTTP_X_GITHUB_EVENT'] != 'push' && @$_SERVER['HTTP_X_GITHUB_EVENT'] != 'release')
            return errjson('http header error');
        if(@$_SERVER['HTTP_AUTHORIZATION'] != 'Bearer token123456')
            return errjson('http 授权标头 AUTHORIZATION error');
        if ($fp = fopen(PATH_WEB . 'ud/gitpull.x', 'w')) {
            @fwrite($fp, date('Y-m-d H:i:s'));
            fclose($fp);
            return succjson();
        } else
            return errjson('gitpull.x create error');
    }
    public static function json_result() {
        $data = get('data');
        if ($data == 'success') {
        } else {
        }
        return succjson();
    }
}
