step 1 for cibuild php
This commit is contained in:
		
							parent
							
								
									8e70ce3112
								
							
						
					
					
						commit
						abf87f1955
					
				| 
						 | 
				
			
			@ -5,3 +5,4 @@
 | 
			
		|||
.vscode/ipch
 | 
			
		||||
generated/*
 | 
			
		||||
lib/generated
 | 
			
		||||
webinstall/token.php
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,122 @@
 | 
			
		|||
<?php
 | 
			
		||||
include("token.php");
 | 
			
		||||
include("functions.php");
 | 
			
		||||
include("config.php");
 | 
			
		||||
if (! isset($CI_TOKEN)) die("no token");
 | 
			
		||||
const apiBase="https://circleci.com/api/v2/";
 | 
			
		||||
const apiRepo="project/gh/#user#/#repo#";
 | 
			
		||||
const workflowName="build-workflow";
 | 
			
		||||
const jobName="pio-build";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function getTokenHeaders(){
 | 
			
		||||
    global $CI_TOKEN;
 | 
			
		||||
    return array('Circle-Token'=>$CI_TOKEN);
 | 
			
		||||
}
 | 
			
		||||
function getPipeline($pipeline){
 | 
			
		||||
    $url=apiBase."/pipeline/$pipeline";
 | 
			
		||||
    $token=getTokenHeaders();
 | 
			
		||||
    return getJson($url,$token,true);
 | 
			
		||||
}
 | 
			
		||||
function getWorkflow($pipeline,$workflowName){
 | 
			
		||||
    $url=apiBase."/pipeline/$pipeline/workflow";
 | 
			
		||||
    $token=getTokenHeaders();
 | 
			
		||||
    $pstate=getJson($url,$token,true);
 | 
			
		||||
    if (! isset($pstate['items'])){
 | 
			
		||||
        throw new Exception("no workflows in pipeline");
 | 
			
		||||
    }
 | 
			
		||||
    foreach ($pstate['items'] as $workflow){
 | 
			
		||||
        if (isset($workflow['name']) && $workflow['name'] == $workflowName){
 | 
			
		||||
            if (!isset($workflow['id'])){
 | 
			
		||||
                throw new Exception("no workflow id found");
 | 
			
		||||
            }
 | 
			
		||||
            return $workflow;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    throw new Exception("workflow $workflowName not found");
 | 
			
		||||
}
 | 
			
		||||
function getJob($pipeline,$workflow,$jobName){
 | 
			
		||||
    $url=apiBase."/workflow/".$workflow."/job";
 | 
			
		||||
    $token=getTokenHeaders();
 | 
			
		||||
    $wstate=getJson($url,$token,true);
 | 
			
		||||
    if (! isset($wstate['items'])){
 | 
			
		||||
        throw new Exception("no jobs in workflow");
 | 
			
		||||
    }
 | 
			
		||||
    foreach ($wstate['items'] as $job){
 | 
			
		||||
        if (isset($job['name']) && $job['name'] == $jobName){
 | 
			
		||||
            if (! isset($job['id'])){
 | 
			
		||||
                throw new Exception("no job id found");
 | 
			
		||||
            }
 | 
			
		||||
            return $job;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    throw new Exception("job $jobName not found");
 | 
			
		||||
}
 | 
			
		||||
function getJobStatus($pipeline,$wf=workflowName,$job=jobName){
 | 
			
		||||
    $pstat=getPipeline($pipeline);
 | 
			
		||||
    if (isset($pstat['error'])){
 | 
			
		||||
        throw new Exception($pstat["error"]);
 | 
			
		||||
    }
 | 
			
		||||
    if (! isset($pstat['state'])){
 | 
			
		||||
        throw new Exception("state not set");
 | 
			
		||||
    }
 | 
			
		||||
    if ($pstat['state'] != 'created'){
 | 
			
		||||
        return $pstat;
 | 
			
		||||
    }
 | 
			
		||||
    $pstat=getWorkflow($pipeline,$wf);
 | 
			
		||||
    $pstat=getJob($pipeline,$pstat['id'],$job);
 | 
			
		||||
    return $pstat;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function getArtifacts($job,$slug){
 | 
			
		||||
    $url=apiBase."/project/$slug/$job/artifacts";
 | 
			
		||||
    return getJson($url,getTokenHeaders(),true);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if (isset($_REQUEST['api'])){
 | 
			
		||||
    $action=$_REQUEST['api'];
 | 
			
		||||
    header("Content-Type: application/json");
 | 
			
		||||
    $par=array();
 | 
			
		||||
    if ($action == 'status') {
 | 
			
		||||
        addVars(
 | 
			
		||||
            $par,
 | 
			
		||||
            ['pipeline', 'workflow', 'job'],
 | 
			
		||||
            array('workflow' => workflowName, 'job' => jobName)
 | 
			
		||||
        );
 | 
			
		||||
        try {
 | 
			
		||||
            $pstat = getJobStatus($par['pipeline'], $par['workflow'], $par['job']);
 | 
			
		||||
            echo(json_encode($pstat));
 | 
			
		||||
        } catch (Exception $e) {
 | 
			
		||||
            $rt=array('status'=>'error','error'=>$e->getMessage());
 | 
			
		||||
            echo(json_encode($rt));
 | 
			
		||||
        }
 | 
			
		||||
        exit(0);
 | 
			
		||||
    }
 | 
			
		||||
    if ($action == 'artifacts'){
 | 
			
		||||
        addVars(
 | 
			
		||||
            $par,
 | 
			
		||||
            ['pipeline', 'workflow', 'job'],
 | 
			
		||||
            array('workflow' => workflowName, 'job' => jobName)
 | 
			
		||||
        );
 | 
			
		||||
        try{
 | 
			
		||||
            $jstat=getJobStatus($par['pipeline'], $par['workflow'], $par['job']);
 | 
			
		||||
            if (! isset($jstat['project_slug'])){
 | 
			
		||||
                throw new Exception("no project_slug in job");
 | 
			
		||||
            }
 | 
			
		||||
            if (! isset($jstat['status'])){
 | 
			
		||||
                throw new Exception("no job status");
 | 
			
		||||
            }
 | 
			
		||||
            if ($jstat['status'] != 'success'){
 | 
			
		||||
                throw new Exception("invalid job status ".$jstat['status']);
 | 
			
		||||
            }
 | 
			
		||||
            $astat=getArtifacts($jstat['job_number'],$jstat['project_slug']);
 | 
			
		||||
            echo (json_encode($astat));
 | 
			
		||||
        }catch (Exception $e){
 | 
			
		||||
            echo(json_encode(array('status'=>'error','error'=>$e->getMessage())));
 | 
			
		||||
        }
 | 
			
		||||
        exit(0);
 | 
			
		||||
    }
 | 
			
		||||
    die("invalid api $action");
 | 
			
		||||
}
 | 
			
		||||
die("no action");
 | 
			
		||||
?>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
<?php
 | 
			
		||||
$allowed=array(
 | 
			
		||||
    'user'=> array('wellenvogel'),
 | 
			
		||||
    'repo'=> array('esp32-nmea2000')
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function fillUserAndRepo($vars=null){
 | 
			
		||||
    global $allowed;
 | 
			
		||||
    if ($vars == null) {
 | 
			
		||||
        $vars=array();
 | 
			
		||||
    }
 | 
			
		||||
    foreach (array('user','repo') as $n){
 | 
			
		||||
        if (! isset($_REQUEST[$n])){
 | 
			
		||||
            die("missing parameter $n");
 | 
			
		||||
        }
 | 
			
		||||
        $v=$_REQUEST[$n];
 | 
			
		||||
        $av=$allowed[$n];
 | 
			
		||||
        if (! in_array($v,$av)){
 | 
			
		||||
            die("value $v for $n not allowed");
 | 
			
		||||
        }
 | 
			
		||||
        $vars[$n]=$v;
 | 
			
		||||
    }
 | 
			
		||||
    return $vars;
 | 
			
		||||
}
 | 
			
		||||
?>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,152 @@
 | 
			
		|||
<?php
 | 
			
		||||
function safeName($name)
 | 
			
		||||
{
 | 
			
		||||
    return preg_replace('[^0-9_a-zA-Z.-]', '', $name);
 | 
			
		||||
}
 | 
			
		||||
function replaceVars($str, $vars)
 | 
			
		||||
{
 | 
			
		||||
    foreach ($vars as $n => &$v) {
 | 
			
		||||
        $str = str_replace("#" . $n . "#", $v, $str);
 | 
			
		||||
    }
 | 
			
		||||
    return $str;
 | 
			
		||||
}
 | 
			
		||||
if (!function_exists('getallheaders')) {
 | 
			
		||||
    function getallheaders()
 | 
			
		||||
    {
 | 
			
		||||
        $headers = [];
 | 
			
		||||
        foreach ($_SERVER as $name => $value) {
 | 
			
		||||
            if (substr($name, 0, 5) == 'HTTP_') {
 | 
			
		||||
                $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return $headers;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
function addVars(&$vars,$names,$defaults=null){
 | 
			
		||||
    foreach ($names as $n){
 | 
			
		||||
        $v=null;
 | 
			
		||||
        if (! isset($_REQUEST[$n])){
 | 
			
		||||
            if ($defaults == null || ! isset($defaults[$n])) die("missing parameter $n");
 | 
			
		||||
            $v=$defaults[$n];
 | 
			
		||||
        }
 | 
			
		||||
        else{
 | 
			
		||||
            $v=safeName($_REQUEST[$n]);
 | 
			
		||||
        }
 | 
			
		||||
        $vars[$n]=$v;
 | 
			
		||||
    }
 | 
			
		||||
    return $vars;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function curl_exec_follow(/*resource*/ $ch, /*int*/ &$maxredirect = null) {
 | 
			
		||||
    $mr = $maxredirect === null ? 5 : intval($maxredirect);
 | 
			
		||||
    if (ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off') && false) {
 | 
			
		||||
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $mr > 0);
 | 
			
		||||
        curl_setopt($ch, CURLOPT_MAXREDIRS, $mr);
 | 
			
		||||
    } else {
 | 
			
		||||
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
 | 
			
		||||
        if ($mr > 0) {
 | 
			
		||||
            $newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
 | 
			
		||||
            $rch = curl_copy_handle($ch);
 | 
			
		||||
            curl_setopt($rch, CURLOPT_HEADER, true);
 | 
			
		||||
            curl_setopt($rch, CURLOPT_NOBODY, true);
 | 
			
		||||
            curl_setopt($rch, CURLOPT_FORBID_REUSE, false);
 | 
			
		||||
            curl_setopt($rch, CURLOPT_RETURNTRANSFER, true);
 | 
			
		||||
            do {
 | 
			
		||||
                curl_setopt($rch, CURLOPT_URL, $newurl);
 | 
			
		||||
                $header = curl_exec($rch);
 | 
			
		||||
                if (curl_errno($rch)) {
 | 
			
		||||
                    $code = 0;
 | 
			
		||||
                } else {
 | 
			
		||||
                    $code = curl_getinfo($rch, CURLINFO_HTTP_CODE);
 | 
			
		||||
                    if ($code == 301 || $code == 302) {
 | 
			
		||||
                        preg_match('/Location:(.*?)\n/', $header, $matches);
 | 
			
		||||
                        $newurl = trim(array_pop($matches));
 | 
			
		||||
                    } else {
 | 
			
		||||
                        $code = 0;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            } while ($code && --$mr);
 | 
			
		||||
            curl_close($rch);
 | 
			
		||||
            if (!$mr) {
 | 
			
		||||
                if ($maxredirect === null) {
 | 
			
		||||
                    trigger_error('Too many redirects. When following redirects, libcurl hit the maximum amount.', E_USER_WARNING);
 | 
			
		||||
                } else {
 | 
			
		||||
                    $maxredirect = 0;
 | 
			
		||||
                }
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            curl_setopt($ch, CURLOPT_URL, $newurl);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    curl_setopt(
 | 
			
		||||
        $ch,
 | 
			
		||||
        CURLOPT_HEADERFUNCTION,
 | 
			
		||||
        function ($curl, $header) {
 | 
			
		||||
            header($header);
 | 
			
		||||
            return strlen($header);
 | 
			
		||||
        }
 | 
			
		||||
    );
 | 
			
		||||
    curl_setopt(
 | 
			
		||||
        $ch,
 | 
			
		||||
        CURLOPT_WRITEFUNCTION,
 | 
			
		||||
        function ($curl, $body) {
 | 
			
		||||
            echo $body;
 | 
			
		||||
            return strlen($body);
 | 
			
		||||
        }
 | 
			
		||||
    );
 | 
			
		||||
    header('Access-Control-Allow-Origin:*');
 | 
			
		||||
    return curl_exec($ch);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function setFw($curl,$aheaders=null){
 | 
			
		||||
    $headers=getallheaders();
 | 
			
		||||
    $FWHDR = ['User-Agent'];
 | 
			
		||||
    $outHeaders = array();
 | 
			
		||||
    foreach ($FWHDR as $k) {
 | 
			
		||||
        if (isset($headers[$k])) {
 | 
			
		||||
            array_push($outHeaders, "$k: $headers[$k]");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    if ($aheaders != null){
 | 
			
		||||
        foreach ($aheaders as $hk => $hv){
 | 
			
		||||
            array_push($outHeaders,"$hk: $hv");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    curl_setopt($curl, CURLOPT_HTTPHEADER, $outHeaders);
 | 
			
		||||
}
 | 
			
		||||
function getJson($url,$headers=null){
 | 
			
		||||
    $curl = curl_init();
 | 
			
		||||
    curl_setopt($curl, CURLOPT_URL,$url);
 | 
			
		||||
    curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
 | 
			
		||||
    setFw($curl,$headers);
 | 
			
		||||
    $response = curl_exec($curl);
 | 
			
		||||
    $httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
 | 
			
		||||
    #echo("curl exec for $url:$response:$httpcode\n");
 | 
			
		||||
    if($e = curl_error($curl)) {
 | 
			
		||||
        curl_close($curl);
 | 
			
		||||
        return array('error'=>$e);
 | 
			
		||||
    } else {
 | 
			
		||||
        if ($httpcode >= 300){
 | 
			
		||||
            curl_close($curl);
 | 
			
		||||
            return array('error'=>"HTTP code ".$httpcode);
 | 
			
		||||
        }
 | 
			
		||||
        curl_close($curl);
 | 
			
		||||
        return json_decode($response, true);
 | 
			
		||||
    }    
 | 
			
		||||
}
 | 
			
		||||
function proxy($url)
 | 
			
		||||
{
 | 
			
		||||
    $ch = curl_init($url);
 | 
			
		||||
    curl_setopt_array(
 | 
			
		||||
        $ch,
 | 
			
		||||
        [
 | 
			
		||||
            CURLOPT_RETURNTRANSFER => true,
 | 
			
		||||
            CURLOPT_CONNECTTIMEOUT => 30,
 | 
			
		||||
        ]
 | 
			
		||||
    );
 | 
			
		||||
    setFw($ch);
 | 
			
		||||
    $response = curl_exec_follow($ch);
 | 
			
		||||
    curl_close($ch);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
| 
						 | 
				
			
			@ -1,161 +1,9 @@
 | 
			
		|||
<?php
 | 
			
		||||
	include("functions.php");
 | 
			
		||||
	include("config.php");
 | 
			
		||||
	$api="https://api.github.com/repos/#user#/#repo#/releases/latest";
 | 
			
		||||
	$download="https://github.com/#user#/#repo#/releases/download/#dlVersion#/#dlName#";
 | 
			
		||||
	$manifest="?dlName=#mName#&dlVersion=#mVersion#&user=#user#&repo=#repo#";
 | 
			
		||||
	$allowed=array(
 | 
			
		||||
		'user'=> array('wellenvogel'),
 | 
			
		||||
		'repo'=> array('esp32-nmea2000')
 | 
			
		||||
	);
 | 
			
		||||
	if (!function_exists('getallheaders')) {
 | 
			
		||||
		function getallheaders()
 | 
			
		||||
		{
 | 
			
		||||
			$headers = [];
 | 
			
		||||
			foreach ($_SERVER as $name => $value) {
 | 
			
		||||
				if (substr($name, 0, 5) == 'HTTP_') {
 | 
			
		||||
					$headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			return $headers;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	function safeName($name){
 | 
			
		||||
		return preg_replace('[^0-9_a-zA-Z.-]','',$name);
 | 
			
		||||
	}
 | 
			
		||||
	function replaceVars($str,$vars){
 | 
			
		||||
		foreach ($vars as $n => &$v){
 | 
			
		||||
			$str=str_replace("#".$n."#",$v,$str);
 | 
			
		||||
		}
 | 
			
		||||
		return $str;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function fillUserAndRepo($vars=null){
 | 
			
		||||
		global $allowed;
 | 
			
		||||
		if ($vars == null) {
 | 
			
		||||
			$vars=array();
 | 
			
		||||
		}
 | 
			
		||||
		foreach (array('user','repo') as $n){
 | 
			
		||||
			if (! isset($_REQUEST[$n])){
 | 
			
		||||
				die("missing parameter $n");
 | 
			
		||||
			}
 | 
			
		||||
			$v=$_REQUEST[$n];
 | 
			
		||||
			$av=$allowed[$n];
 | 
			
		||||
			if (! in_array($v,$av)){
 | 
			
		||||
				die("value $v for $n not allowed");
 | 
			
		||||
			}
 | 
			
		||||
			$vars[$n]=$v;
 | 
			
		||||
		}
 | 
			
		||||
		return $vars;
 | 
			
		||||
	}
 | 
			
		||||
	function addVars($vars,$names){
 | 
			
		||||
		foreach ($names as $n){
 | 
			
		||||
			if (! isset($_REQUEST[$n])){
 | 
			
		||||
				die("missing parameter $n");
 | 
			
		||||
			}
 | 
			
		||||
			$safe=safeName($_REQUEST[$n]);
 | 
			
		||||
			$vars[$n]=$safe;
 | 
			
		||||
		}
 | 
			
		||||
		return $vars;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function curl_exec_follow(/*resource*/ $ch, /*int*/ &$maxredirect = null) {
 | 
			
		||||
		$mr = $maxredirect === null ? 5 : intval($maxredirect);
 | 
			
		||||
		if (ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off') && false) {
 | 
			
		||||
			curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $mr > 0);
 | 
			
		||||
			curl_setopt($ch, CURLOPT_MAXREDIRS, $mr);
 | 
			
		||||
		} else {
 | 
			
		||||
			curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
 | 
			
		||||
			if ($mr > 0) {
 | 
			
		||||
				$newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
 | 
			
		||||
				$rch = curl_copy_handle($ch);
 | 
			
		||||
				curl_setopt($rch, CURLOPT_HEADER, true);
 | 
			
		||||
				curl_setopt($rch, CURLOPT_NOBODY, true);
 | 
			
		||||
				curl_setopt($rch, CURLOPT_FORBID_REUSE, false);
 | 
			
		||||
				curl_setopt($rch, CURLOPT_RETURNTRANSFER, true);
 | 
			
		||||
				do {
 | 
			
		||||
					curl_setopt($rch, CURLOPT_URL, $newurl);
 | 
			
		||||
					$header = curl_exec($rch);
 | 
			
		||||
					if (curl_errno($rch)) {
 | 
			
		||||
						$code = 0;
 | 
			
		||||
					} else {
 | 
			
		||||
						$code = curl_getinfo($rch, CURLINFO_HTTP_CODE);
 | 
			
		||||
						if ($code == 301 || $code == 302) {
 | 
			
		||||
							preg_match('/Location:(.*?)\n/', $header, $matches);
 | 
			
		||||
							$newurl = trim(array_pop($matches));
 | 
			
		||||
						} else {
 | 
			
		||||
							$code = 0;
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				} while ($code && --$mr);
 | 
			
		||||
				curl_close($rch);
 | 
			
		||||
				if (!$mr) {
 | 
			
		||||
					if ($maxredirect === null) {
 | 
			
		||||
						trigger_error('Too many redirects. When following redirects, libcurl hit the maximum amount.', E_USER_WARNING);
 | 
			
		||||
					} else {
 | 
			
		||||
						$maxredirect = 0;
 | 
			
		||||
					}
 | 
			
		||||
					return false;
 | 
			
		||||
				}
 | 
			
		||||
				curl_setopt($ch, CURLOPT_URL, $newurl);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		curl_setopt(
 | 
			
		||||
			$ch,
 | 
			
		||||
			CURLOPT_HEADERFUNCTION,
 | 
			
		||||
			function ($curl, $header) {
 | 
			
		||||
				header($header);
 | 
			
		||||
				return strlen($header);
 | 
			
		||||
			}
 | 
			
		||||
		);
 | 
			
		||||
		curl_setopt(
 | 
			
		||||
			$ch,
 | 
			
		||||
			CURLOPT_WRITEFUNCTION,
 | 
			
		||||
			function ($curl, $body) {
 | 
			
		||||
				echo $body;
 | 
			
		||||
				return strlen($body);
 | 
			
		||||
			}
 | 
			
		||||
		);
 | 
			
		||||
		header('Access-Control-Allow-Origin:*');
 | 
			
		||||
		return curl_exec($ch);
 | 
			
		||||
	} 
 | 
			
		||||
	function setFw($curl){
 | 
			
		||||
        $headers=getallheaders();
 | 
			
		||||
		$FWHDR = ['User-Agent'];
 | 
			
		||||
		$outHeaders = array();
 | 
			
		||||
		foreach ($FWHDR as $k) {
 | 
			
		||||
			if (isset($headers[$k])) {
 | 
			
		||||
				array_push($outHeaders, "$k: $headers[$k]");
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		curl_setopt($curl, CURLOPT_HTTPHEADER, $outHeaders);
 | 
			
		||||
	}
 | 
			
		||||
	function getJson($url){
 | 
			
		||||
        $curl = curl_init();
 | 
			
		||||
        curl_setopt($curl, CURLOPT_URL,$url);
 | 
			
		||||
        curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
 | 
			
		||||
        setFw($curl);
 | 
			
		||||
        $response = curl_exec($curl);
 | 
			
		||||
        if($e = curl_error($curl)) {
 | 
			
		||||
            curl_close($curl);
 | 
			
		||||
            return array('error'=>$e);
 | 
			
		||||
        } else {
 | 
			
		||||
            curl_close($curl);
 | 
			
		||||
            return json_decode($response, true);
 | 
			
		||||
        }    
 | 
			
		||||
    }
 | 
			
		||||
	function proxy($url)
 | 
			
		||||
	{
 | 
			
		||||
		$ch = curl_init($url);
 | 
			
		||||
		curl_setopt_array(
 | 
			
		||||
			$ch,
 | 
			
		||||
			[
 | 
			
		||||
				CURLOPT_RETURNTRANSFER => true,
 | 
			
		||||
				CURLOPT_CONNECTTIMEOUT => 30,
 | 
			
		||||
			]
 | 
			
		||||
		);
 | 
			
		||||
		setFw($ch);
 | 
			
		||||
		$response = curl_exec_follow($ch);
 | 
			
		||||
		curl_close($ch);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	if (isset($_REQUEST['api'])) {
 | 
			
		||||
		$vars=fillUserAndRepo();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
#! /bin/sh
 | 
			
		||||
if [ "$1" = "" ] ; then
 | 
			
		||||
  echo "usage: $0 targetDir"
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
while true
 | 
			
		||||
do 
 | 
			
		||||
  inotifywait -e modify -e create -e delete -r `dirname $0`
 | 
			
		||||
  echo sync
 | 
			
		||||
  rsync -rav --exclude=\*.swp --exclude=\*~ `dirname $0`/ $1
 | 
			
		||||
 | 
			
		||||
done
 | 
			
		||||
		Loading…
	
		Reference in New Issue